当前位置: 首页 > news >正文

【C++】滑动窗口算法

繁花落尽,我心中仍有花落的声音。一朵,一朵,在无人的山间轻轻飘落。 

前言

  这是我自己学习蓝桥杯算法的第二篇博客总结。

  上一期笔记是关于C++的双指针算法,没看的同学可以过去看看:

【C++】双指针算法-CSDN博客https://blog.csdn.net/hsy1603914691/article/details/145965695?sharetype=blogdetail&sharerId=145965695&sharerefer=PC&sharesource=hsy1603914691&spm=1011.2480.3001.8118

技巧

1. 滑动窗口算法的本质是双指针算法+单调性。一个单向快慢双指针,那么快指针到慢指针之间形成的区间就像一个窗口,随着快慢指针不断的移动,这个区间就如一个滑动的窗口。

2. right指针进窗口指针,直到right指针移出窗口,循环才结束。

3. left指针出窗口指针,当right指针移动到满足情况时,left指针开始移动,直到不再满足情况。

4. [left,right]这段区间就是一个窗口,随着指针的移动而滑动。

5. 滑动窗口算法时间复杂度O=(n)

例题 

1. leetcode-209题: 

209. 长度最小的子数组 - 力扣(LeetCode)https://leetcode.cn/problems/minimum-size-subarray-sum/submissions/609114471/

class Solution {
public:
    int minSubArrayLen(int target, vector<int>& nums) 
    {
        int sum=0,len=INT_MAX;
        int left=0,right=0;
        while(right<nums.size())
        {
            sum+=nums[right];
            while(sum>=target)
            {
                len=min(len,(right-left+1));
                sum-=nums[left];
                left++;
            }
            right++;
        }
        if(len==INT_MAX)
            return 0;
        else
            return len;
    }
};

http://www.dtcms.com/a/61999.html

相关文章:

  • Kubernetes服务部署 —— Kafka
  • 安卓Android与iOS设备管理对比:企业选择指南
  • SVN 拉取,文件冲突 解决办法
  • ClickHouse 数据倾斜实战:案例分析与优化技巧
  • 基于 Simulink 的超级储能参与电网一次调频仿真研究
  • uniapp+Vue3 组件之间的传值方法
  • simpleGRPO实现分享)
  • p标签中嵌套ul
  • 产品经理的大语言模型课 03 - 定制自己的大语言模型
  • Qt 驾校考试系统项目实现
  • AWS容器化部署指南
  • 【C++】特殊类设计
  • 【CXX】6.4 CxxString — std::string
  • 第十七:go 反射
  • Spring Boot中@Valid 与 @Validated 注解的详解
  • macOS 终端优化
  • 使用DeepSeek+蓝耘快速设计网页简易版《我的世界》小游戏
  • 从0到1:JavaScript小白进阶之路
  • mapbox-gl的Popup的使用详解
  • 旋转位置编码(3)
  • HarmonyOS
  • Spring Boot 项目中使用责任链模式实现复杂接口解耦和动态编排(带示例)
  • 前端技术百宝箱
  • Tweak Power:全方位电脑系统优化的高效工具
  • MySQL 与 MongoDB 的区别
  • CAN总线协议攻防实战:从漏洞分析到攻击模拟
  • 衣联网的商品列表页面结构是怎样的?
  • 设计基于锁的并发数据结构_第六章_《C++并发编程实战》笔记
  • 新一代开源数字供应链安全审查与治理平台:悬镜源鉴SCA
  • 版本控制泄露源码 .svn