思路 就是求几个连续数组的和等于sum;
- 设置变量 left=1;right=-1;滑动窗口的初始化为不可能取得的值;int cur=0;
- 循环的条件while(left<sum);
- if(cur<sum&&right+1<sum) cur+=++right;
- else cur-=left++;
- if(cur==sum) temp.push_back(i) result.push_back(temp)
代码:
class Solution {
public:
vector<vector<int> > FindContinuousSequence(int sum)
{
vector<vector<int>>result;
if(sum<=2)return result;
int left=1;//构建一个滑动窗口【left,right】;并且初始化为不可能取到的值;
int right=0;
int cur=0;
while(left<sum)
{
if(cur<sum&&right+1<=sum)
{
cur+=++right;
}
else
cur-=left++;
if(cur==sum)
{
vector<int>temp;
for(int i=left;i<=right;i++)
temp.push_back(i);
result.push_back(temp);
}
}
return result;
}
};