题目:输入一个正整数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; } };