思路:
small=1,big=2,如果大于sum,则small++,如果小于big++,直到small到(sum+1)/2为止(因为至少要两个数,如果small大于等于这个,small加上big肯定会大于sum,small再++,也没有办法与sum相等)。如果满足条件,则big++,继续。
class Solution {
public:
vector<vector<int> > FindContinuousSequence(int sum) {
vector<int> tmp;
vector<vector<int> > res;
int small=1;
int big=2;
int i=0;
int sum1=0;
while(small<(sum+1)/2){
for(i=small;i<=big;i++){
sum1+=i;
tmp.push_back(i);
}
if(sum1==sum){
res.push_back(tmp);
big++;
}
else if(sum1>sum){
small++;
}
else {
big++;
}
tmp.clear();
sum1=0;
}
return res;
}
};