您的位置:首页 > 其它

和为S的连续正数序列

2016-04-18 15:31 211 查看
还是要注意几点的:

1、至少保证一个序列里有2个数

2、只有在遇到当前和大于目标值时,才递增小数,其余一律递增大数。

class Solution {
public:
vector<vector<int> > FindContinuousSequence(int sum) {
vector<vector<int> >res;
if(sum<3) return res;
int first=1,last=2,tmp=3,mid=(1+sum)/2;
while(first<mid)
{
if(tmp==sum)
{
vector<int> seq;
for(int i=first;i<=last;i++)
seq.push_back(i);
res.push_back(seq);
}
while(tmp>sum&&first<mid)
{
tmp-=first;
first++;
if(tmp==sum)
{
vector<int> seq;
for(int i=first;i<=last;i++)
seq.push_back(i);
res.push_back(seq);
}
}

last++;
tmp+=last;

}
return res;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: