AcWing 76. 和为S的连续正数序列
原题链接
中等
作者:
自说i
,
2024-01-24 11:31:18
,
所有人可见
,
阅读 35
双指针
class Solution {
public:
vector<vector<int> > findContinuousSequence(int sum) {
vector<vector<int>> q;
vector<int> ans;
if(sum==0||sum==1) return q;//sum只能是奇数,由题意0,1都直接返回即可
int res=0;int maxx=(sum+1)>>1;
for(int l=0,r=0;r<=maxx;r++)
{
res+=r;
while(res>sum) res-=l,l++;
if(res==sum){
int pos=l;
if(pos==0) pos++;//因为l从0开始,第一次的时候不把0算到里面
while(pos<=r){
ans.push_back(pos);
pos++;
}
q.push_back(ans);
ans.clear();//记得把ans清空
}
}
return q;
}
};