【C++】滑动窗口算法

server/2025/3/13 16:37:40/

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

前言

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

  上一期笔记是关于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;elsereturn len;}
};


http://www.ppmy.cn/server/174668.html

相关文章

iOS侧滑返回手势冲突处理

遇到这样一个场景&#xff0c;本身页面vc.view添加了全屏侧滑返回手势&#xff0c; 但是页面中顶部有一个横向滚动的collectionView&#xff0c; 这个时候&#xff0c;我们 如果在页面总滑动横向滚动的collectionView的时候&#xff0c;就会执行横向collectionView的滚动&#…

分布式存储学习——HBase表结构设计

目录 1.4.1 模式创建 1.4.2 Rowkey设计 1.4.3 列族定义 1.4.3.1 可配置的数据块大小 1.4.3.2 数据块缓存 1.4.3.3 布隆过滤器 1.4.3.4 数据压缩 1.4.3.5 单元时间版本 1.4.3.6 生存时间 1.4.4 模式设计实例 1.4.4.1 实例1&#xff1a;动物分类 1.4.4.2 …

Python零基础学习第三天:函数与数据结构

一、函数基础 函数是什么&#xff1f; 想象你每天都要重复做同一件事&#xff0c;比如泡咖啡。函数就像你写好的泡咖啡步骤说明书&#xff0c;每次需要时直接按步骤执行&#xff0c;不用重新想流程。 # 定义泡咖啡的函数 def make_coffee(sugar1): # 默认加1勺糖 print("…

Python----计算机视觉处理(Opencv:自适应二值化,取均值,加权求和(高斯定理))

一、自适应二值化 与二值化算法相比&#xff0c;自适应二值化更加适合用在明暗分布不均的图片&#xff0c;因为图片的明暗不均&#xff0c;导致图片 上的每一小部分都要使用不同的阈值进行二值化处理&#xff0c;这时候传统的二值化算法就无法满足我们的需求 了&#xff0c;于是…

05.基于 TCP 的远程计算器:从协议设计到高并发实现

&#x1f4d6; 目录 &#x1f4cc; 前言&#x1f50d; 需求分析 &#x1f914; 我们需要解决哪些问题&#xff1f; &#x1f3af; 方案设计 &#x1f4a1; 服务器架构 &#x1f680; 什么是协议&#xff1f;为什么要设计协议&#xff1f; &#x1f4cc; 结构化数据的传输问题 …

SAIL-RK3576核心板应用方案——无人机视觉定位与地面无人设备通信控制方案

本方案以 EFISH-RK3576-SBC工控板 或 SAIL-RK3576核心板 为核心&#xff0c;结合高精度视觉定位、实时通信与智能控制技术&#xff0c;实现无人机与地面无人设备的协同作业。方案适用于物流巡检、农业植保、应急救援等场景&#xff0c;具备高精度定位、低延迟通信与强环境适应性…

Flutter三棵树是什么,为什么这么设计

目录 1. 三棵树的定义与职责 (1) Widget 树 (2) Element 树 (3) RenderObject 树 2. 三棵树的协同工作流程 3. 为什么设计三棵树&#xff1f; (1) 性能优化 (2) 逻辑解耦 (3) 灵活性 4. 三棵树的设计优势总结 示例&#xff1a;动态列表更新 常见面试追问 Flutter 的…

第十八:go 并发 goroutine

channel 可以让多个goroutine 之间实现通信 Add方法调用时机&#xff1a;必须在goroutine 启动之前调用Add方法来增加计数器的值。 如果在goroutine已经启动之后再调用Add&#xff0c;可能会导致Wait方法提前返回&#xff0c;因为计数器没有正确反映正在运行的goroutine的数量…