题目:输入一个正整数s打印出s的连续正整数合(至少含有两个数字)如15 ,由于1+2+3+4+5 = 4+5+6 = 7+8 = 15 所以结果是 {1,2,3,4,5}{4,5,6}{7,8}
设两个数small big,求从small 到big连续正整数的和,如果和正好是目标值,则找到一个解,否则: 1.如果当前和大于目标值,则small ++ ,2.如果小于目标值则 big ++.
下面是实现代码:
class Solution {
public:
vector<vector<int> > FindContinuousSequence(int sum) {
vector<vector<int> > result;
if(sum<3) return result;
int small =1;
int big = 2;
int csum = small+big;
while(small<(sum+1)/2){
if(csum == sum){
vector<int> temp;
for(int i =small;i<=big;i++) temp.push_back(i);
result.push_back(temp);
}
while(csum > sum && small <(sum+1)/2){
csum -=small;
small++;
if(csum == sum){
vector<int> temp;
for(int i =small;i<=big;i++) temp.push_back(i);
result.push_back(temp);
}
}
big++;
csum +=big;
}
return result;
}
};