classSolution{public:
vector<vector<int>>FindContinuousSequence(int sum){
vector<vector<int>> ans;int L =1, R =1;// [L. R] int num =1;while(L <= sum /2){if(num == sum){
vector<int> vec;for(int i = L; i <= R;++i)
vec.push_back(i);
ans.push_back(vec);
num -= L;++L;}elseif(num < sum){++R;
num += R;}else{
num -= L;++L;}}return ans;}};/* x-n,...,x,...,x+n
(2*n+1)*x==sum */
O(N)解法
classSolution{public:
vector<vector<int>>FindContinuousSequence(int sum){
vector<vector<int>> ans;int n =sqrt(sum *2);for(int i = n; i >=2;--i){if(i &1&& sum % i ==0||(sum % i)*2== i){
vector<int> vec;for(int j =0, k =(sum / i)-(i -1)/2; j < i;++j,++k)
vec.push_back(k);
ans.push_back(vec);}}return ans;}};