考察知识点:数组、双指针
题目分析:
从左到右遍历一遍即可。使用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; } };