【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;
    }
};
相关文章
|
17天前
|
算法 搜索推荐
力扣每日一题 6/15 滑动窗口
力扣每日一题 6/15 滑动窗口
11 1
|
5天前
|
存储 算法
经典的滑动窗口的题目 力扣 2799. 统计完全子数组的数目(面试题)
经典的滑动窗口的题目 力扣 2799. 统计完全子数组的数目(面试题)
|
1月前
|
算法
【LeetCode刷题】滑动窗口解决问题:串联所有单词的子串(困难)、最小覆盖子串(困难)
【LeetCode刷题】滑动窗口解决问题:串联所有单词的子串(困难)、最小覆盖子串(困难)
|
1月前
|
算法 容器
【LeetCode刷题】滑动窗口解决问题:水果成篮、找到字符串中所有字母异位词
【LeetCode刷题】滑动窗口解决问题:水果成篮、找到字符串中所有字母异位词
|
1月前
|
存储 算法 数据可视化
哈希表法快速求解最长连续序列 | 力扣128题详细解析
哈希表法快速求解最长连续序列 | 力扣128题详细解析
|
17天前
|
算法 索引
力扣随机一题 位运算/滑动窗口/数组
力扣随机一题 位运算/滑动窗口/数组
15 0
|
17天前
|
存储 算法
力扣经典150题第四十六题:最长连续序列
力扣经典150题第四十六题:最长连续序列
6 0
|
1月前
|
Java
贪心 -力扣860.柠檬水找零力扣2208.将数组和减半的最少操作次数力扣179.最大数力扣376.摆动序列
贪心 -力扣860.柠檬水找零力扣2208.将数组和减半的最少操作次数力扣179.最大数力扣376.摆动序列
|
2月前
|
存储
【LeetCode】剑指 Offer 54. 二叉搜索树的第k大节点
【LeetCode】剑指 Offer 54. 二叉搜索树的第k大节点
26 1
|
1月前
【LeetCode刷题】滑动窗口思想解决:最大连续1的个数 III、将x减到0的最小操作数
【LeetCode刷题】滑动窗口思想解决:最大连续1的个数 III、将x减到0的最小操作数