面试题57-2:和为s的连续正整数序列
文章目录
题目
输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。
序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。
考点
双指针法
LeetCode版本
class Solution {
public:
vector<int> addTemp(int left, int right){
vector<int>temp;
for(int i = left; i<=right;i ++){
temp.push_back(i);
}
return temp;
}
vector<vector<int>> findContinuousSequence(int target) {
vector<int> vec;
int cursum(0);
vector<vector<int>> res;
int left(1),right(0);
for(int i = 1; i <= (target+1)>>1; i++){
cursum +=i;
++right;
if(cursum == target){
res.push_back(addTemp(left,right));
}
while(cursum > target){
cursum -= left;
left++;
if(cursum == target){
res.push_back(addTemp(left,right));
}
}
}
return res;
}
};