【LeetCode剑指offer57 II】和为s的连续正数序列(用vector模拟滑动窗口)

简介: 因为找的是连续子序列(并且题目的原序列是从小到大元素排列)的和为target,所以使用滑动窗口,如果加上当前元素后sum满足条件则push_back

一、题目


image.png

二、思路

因为找的是连续子序列(并且题目的原序列是从小到大元素排列)的和为target,所以使用滑动窗口,如果加上当前元素后sum满足条件则push_back,如果加上当前元素后sum过大了,则需要从该滑动窗口中,减去最前面的元素(最小元素),减着减着可能就找到新一种情况,如果减到sum还比target小了,那没必要继续减了,继续扩大滑动窗口的右侧边界。


三、代码

class Solution {
public:
    vector<vector<int>> findContinuousSequence(int target) {
        vector<vector<int>>ans;
        vector<int>temp;
        int sum = 0;
        for(int i = 1; i <= target/2 + 1; i++){
            sum += i;
            temp.push_back(i);
            if(sum == target){
                ans.push_back(temp);
                continue;
            }
            while(sum > target){
                sum -= temp[0];
                temp.erase(temp.begin());
                //删除头元素
                if(sum == target){
                    ans.push_back(temp);
                    continue;
                }
            }
        }
        return ans;
    }
};
相关文章
|
2月前
|
存储 算法
《LeetCode》—— 摆动序列
《LeetCode》—— 摆动序列
|
2月前
|
存储 算法
LeetCode刷题---209. 长度最小的子数组(双指针-滑动窗口)
LeetCode刷题---209. 长度最小的子数组(双指针-滑动窗口)
|
4天前
leetcode代码记录(最长连续递增序列
leetcode代码记录(最长连续递增序列
9 2
|
4天前
leetcode代码记录(最长递增子序列
leetcode代码记录(最长递增子序列
7 1
|
5天前
|
算法 索引
【刷题】滑动窗口精通 — Leetcode 30. 串联所有单词的子串 | Leetcode 76. 最小覆盖子串
经过这两道题目的书写,相信大家一定深刻认识到了滑动窗口的使用方法!!! 下面请大家继续刷题吧!!!
9 0
|
5天前
leetcode代码记录(滑动窗口最大值
leetcode代码记录(滑动窗口最大值
8 0
|
5天前
|
算法
leetcode代码记录(摆动序列
leetcode代码记录(摆动序列
8 0
|
1月前
|
算法 测试技术
每日一题:LeetCode-209. 长度最小的子数组(滑动窗口)
每日一题:LeetCode-209. 长度最小的子数组(滑动窗口)
|
2月前
|
存储
力扣187 重复DNA序列
力扣187 重复DNA序列
|
4月前
代码随想录 Day44 动规12 LeetCode T300 最长递增子序列 T674 最长连续递增序列 T718 最长重复子数组
代码随想录 Day44 动规12 LeetCode T300 最长递增子序列 T674 最长连续递增序列 T718 最长重复子数组
43 0