题解:
(1)双指针法
(2)停止条件l<r,因为如果l>=r,则l+r大于target
class Solution {
public:
vector<vector<int>> findContinuousSequence(int target) {
vector<vector<int>> result;
if(target <= 0) {
return result;
}
int l = 1;
int r = 2;
while(l < r) {
// 计算[l,r]之间数字的和
int sum = (l + r)*(r-l+1)/2;
if(sum == target) {
vector<int> temp;
temp.reserve(r-l+1);
// 记录结果
for(int i = l; i <= r; ++i) {
temp.push_back(i);
}
result.push_back(std::move(temp));
++l;
} else if(sum > target) {
// 比taget大,左指针增加
++l;
} else {
++r;
}
}
return result;
}
};