考察知识点:数组、双指针
题目分析:
从左到右遍历一遍即可。使用left指针指向序列的起始位置,right指针指向序列的终止位置。如果右边能扩大一位,就扩大一位。不能扩大时,就记录结果,left指针可以直接指向该序列下一位作为开始;当right遍历完n个数就能得到答案。
所用编程语言:C++
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param groups int整型vector
* @param n int整型
* @return int整型vector<vector<>>
*/
vector<vector<int> > findGatheringAreas(vector<int>& groups, int n) {
// write code here
int left = 0, right = 0;
vector<vector<int>> res;
while (right < n) {
vector<int> up;
while (right < n - 1 && groups[right] + 1 == groups[right + 1]) {
right++;
}
up.push_back(groups[left]);
up.push_back(groups[right]);
right++;
left = right;
res.push_back(up);
}
return res;
}
};

京公网安备 11010502036488号