和为S的连续正数序列

还是要注意几点的:

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 };
原文地址:https://www.cnblogs.com/daocaorenblog/p/5404668.html