76. 和为S的连续正数序列
https://www.acwing.com/solution/acwing/content/2670/
代码
class Solution {
public:
vector<vector<int> > findContinuousSequence(int sum) {
vector<vector<int>> res;
for (int i = 1, j = 1, s = 1; i <= sum; i ++ )//连续正数,从1开始
{
//只有当s == sum,跳出while
while (s < sum) j ++, s += j;
/*如果当前i到j的和是否等于sum*/
if (s == sum && j - i+1 > 1)//连续正数序列(至少含有两个数),所以区间长度为j-i+1,应该大于1
{
vector<int> line;
for (int k = i; k <= j; k ++ ) line.push_back(k);
res.push_back(line);
}
//s == sum后,计算下一组和为sum的连续正数序列。i向后移动一位,
//即此时s=(i+1)到j的和。
s -= i;
}
return res;
}
};
注意:
如果vector<int> path定义为全局变量,path会保留所有遍历成功的结果,并在原来成功的路径后面添加下一条路径。这显然是错的。
要定义成局部变量
带女朋友搬家新家条件不好,累到女朋友了,让女朋友受苦了,特此明志:每天学习,明年这个时候(20190812)让女朋友住上大房子,永远年轻,永远热泪盈眶,很多人都是这样,他们都把自己当成身在梦中一样,浑浑噩噩地过日子,只有痛苦或爱或危险可以让他们重新感到这个世界的真实。