算法之滑动窗口

滑动窗口_长度最小的子数组

209. 长度最小的子数组 - 力扣(LeetCode)

这道题用滑动窗口(同向双指针) 解决,需要抓住一个关键性质:数组里全是正整数,所以子数组的总和随长度增加而单调递增

这就是"利用单调性,规避很多没有必要枚举"的含义。


一、为什么可以用滑动窗口?

因为所有元素都是正整数:

  • 向右扩展窗口(right++)→ 总和一定变大或不变。

  • 向左收缩窗口(left++)→ 总和一定变小

因此一旦窗口总和达到 target,再往右扩张只会让总和更大、长度更长,不会得到更优解。所以此时应该尝试收缩左边界,看看更短的子数组是否依然 ≥ target


二、算法步骤

  1. 初始化
    left = 0, sum = 0, min_len = INT_MAX

  2. 右指针逐个进入窗口
    for right = 0 to n-1:

    • 进窗口sum += nums[right]

    • 判断 + 出窗口
      while (sum >= target) {

        更新结果min_len = min(min_len, right - left + 1)

        出窗口sum -= nums[left]; left++;
      }

  3. 循环结束后,如果 min_len 还是 INT_MAX,说明没有符合条件的子数组,返回 0;否则返回 min_len

相关推荐
罗西的思考7 分钟前
【Agentic RL / 强化学习 / OPD】OpenClaw-RL 源码阅读笔记 --- (4)--- 系统架构
人工智能·算法·机器学习
QiLinkOS8 分钟前
从技术到资产的跃迁:企业专利布局的深层逻辑
c语言·数据结构·c++·单片机·嵌入式硬件·算法·开源
aini_lovee16 分钟前
FMCW雷达测速测距系统(锯齿波 + CFAR检测)
算法
qq_2975746719 分钟前
设计模式系列文章(基础篇第 11 篇):模板方法模式——定义算法骨架,实现代码复用与流程统一
算法·设计模式·模板方法模式
lqqjuly26 分钟前
知识蒸馏:理论、算法与可运行实现
人工智能·深度学习·算法
水上冰石35 分钟前
comfui的sd1.5模型,有多少采样算法,详解每一个采样算法
人工智能·算法
黎阳之光1 小时前
视频孪生+空天地水工融合,黎阳之光构建智慧水利监测新范式
大数据·人工智能·物联网·算法·安全
cheems95271 小时前
[算法手记] 贪心 爬楼梯问题
算法·贪心算法
KaMeidebaby1 小时前
卡梅德生物技术快报|酵母双杂交 cDNA 文库构建与蛋白互作筛选流程
服务器·前端·数据库·人工智能·算法
影寂ldy1 小时前
C#Dictionary字典
数据结构