//其实还是双指针,当子序列之和小于sum,大指针加一;否则小指针加一 class Solution { public: vector<vector<int> > FindContinuousSequence(int sum) { vector<vector<int>> res; int begin=1,end=2; while(begin<end){//子序列起始数为begin,末尾数为end int cur=(begin+end)*(end-begin+1)/2;//从begin加到end的和 if(cur<sum)//当子序列和小于所求sum,末尾数end增1 end++; else if(cur==sum){//当子序列和等于所求sum,将子序列按顺序依次放入val中 vector<int> val; for(int i=begin;i<=end;i++){ val.push_back(i); } res.push_back(val);//每存好一个满足条件的子序列,即将其存入res中,并将子序列起始数begin增1 begin++; } else begin++;//当子序列和大于所求sum,将子序列起始数begin增1 } return res; } };