- 滑动窗口,注意滑动窗口是一种思想,并不是有固定得数据结构去支撑他。
- 一般是j,i满足一定得条件采取移动,而不是无条件移动。
- 注意移动的时候的细节,自己一定要用验槽本仔细画出来。
class Solution {
public:
vector<vector<int> > FindContinuousSequence(int sum) {
if(!sum) return {};
vector<vector<int> > res;
vector<int> path;
//滑动窗口这个思想做。
int i = 1, j = 2;
int tmp = 1;
for(;j<=sum;){
if(tmp<sum){
tmp+=j;
j++;//细节
}
if(tmp>sum){
tmp-=i;//细节
i++;
}
if(tmp==sum&&i!=sum){//不能有自身得数字存在(至少两个)
for(int k = i; k<=j-1;k++){//细节
path.push_back(k);
}
res.push_back(path);
path.clear();
tmp -=i;
i++;
}
}
return res;
}
};