题解 | #牧场奶牛集合区域#
牧场奶牛集合区域
https://www.nowcoder.com/practice/89218acf98234315af1cb3a223935318
双指针问题:
基本思路:
1、移动游标,获得可以收集的边界条件!(边界与的条件 保证数据不越界访问)
2、按照目标构造结果变量
3、收集结果,并重新初始化,开始下一次查找
#include <vector> 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 vector<vector<int>> res; int left = 0; int right = 0; while(left < n) { // 有界的连续 一直移动 边界到了right + 1 while (right + 1 < n && groups[right] + 1 == groups[right + 1]) { right++; } vector<int> group(2,0); if (left == right) { group[0] = groups[left]; group[1] = groups[left]; } else { group[0] = groups[left]; group[1] = groups[right]; } //vector<int> group(groups.begin() + left, groups.begin() + right + 1); res.push_back(group); left = right + 1; right = left; } return res; } };