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会保留所有遍历成功的结果,并在原来成功的路径后面添加下一条路径。这显然是错的。
要定义成局部变量