本题的思路为:首先我们用俩个指针,samll,big,当前和为small到big的和,如果当前和大于sum则,small++,如果当前和小于sum则big++;
代码:
vector<vector<int> > FindContinuousSequence(int sum) {
int big=2;
int small=1;
int curSum=small+big;
vector<vector<int>> result;
if(sum<3)
return result;
vector<int> data;
while(small<(sum+1)/2){
if(curSum==sum){
Iniatia(data,small,big);
result.push_back(data);
data.clear();
}
while(curSum>sum && small<(sum+1)/2){
curSum -= small;
small++;
if(curSum==sum){
Iniatia(data,small,big);
result.push_back(data);
data.clear();
}
}
big++;
curSum += big;
}
return result;
}
void Iniatia(vector<int> &data,int start,int end){
for(int i=start;i<=end;i++){
data.push_back(i);
}
}