剑指offer(57)-II
剑指offer(57)-II
剑指 Offer 57 - II. 和为s的连续正数序列
输入一个正整数 target
,输出所有和为 target
的连续正整数序列(至少含有两个数)。
序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。
示例 1:
输入:target = 9
输出:[[2,3,4],[4,5]]
示例 2:
输入:target = 15
输出:[[1,2,3,4,5],[4,5,6],[7,8]]
限制:
1 <= target <= 10^5
简单滑动窗口
class Solution {
public:
vector<vector<int>> findContinuousSequence(int target) {
vector<vector<int>>ans;
//滑动窗口
int l=1;int r=2;int s=3;
while(l<r){
//如果和==target 存入结果
if(s==target){
vector<int>res;
for(int i=l;i<=r;i++){
res.push_back(i);
}
ans.push_back(res);
}
//如果和大于等于target 就需要缩短左边界 让s变小
if(s>=target){
s-=l;//更新s
l++;
}else{
//如果和小于target需要放大右边界
r++;
s+=r;//更新s
}
}
return ans;
}
};
本文来自博客园,作者:{BailanZ},转载请注明原文链接:https://www.cnblogs.com/BailanZ/p/16226666.html