还是要注意几点的:
1、至少保证一个序列里有2个数
2、只有在遇到当前和大于目标值时,才递增小数,其余一律递增大数。
1 class Solution { 2 public: 3 vector<vector<int> > FindContinuousSequence(int sum) { 4 vector<vector<int> >res; 5 if(sum<3) return res; 6 int first=1,last=2,tmp=3,mid=(1+sum)/2; 7 while(first<mid) 8 { 9 if(tmp==sum) 10 { 11 vector<int> seq; 12 for(int i=first;i<=last;i++) 13 seq.push_back(i); 14 res.push_back(seq); 15 } 16 while(tmp>sum&&first<mid) 17 { 18 tmp-=first; 19 first++; 20 if(tmp==sum) 21 { 22 vector<int> seq; 23 for(int i=first;i<=last;i++) 24 seq.push_back(i); 25 res.push_back(seq); 26 } 27 } 28 29 last++; 30 tmp+=last; 31 32 } 33 return res; 34 } 35 };