当前位置: 首页 > 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;
    }
};

相关文章:

  • 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)
  • 武汉公司注册网站/知乎seo排名帝搜软件
  • 山东网站建设开发外包/上海百网优seo优化公司
  • 公司网站内容模块布局/下载官方正版百度
  • 如何设计大型电商网站建设/推一手新闻发稿平台
  • 推介做resume的网站/郑州网站营销推广
  • 怎么做hs网站/南宁网络推广外包