(C++)长度最小的子数组--滑动窗口

个人主页:Lei宝啊

愿所有美好如期而遇


力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/2VG8Kg/


算法原理

滑动窗口其实就是种双指针,只是这种双指针只向后移动,不会回退,具有单调性,也就是说,整个过程中left和right只会++。

我们通过图示来详解,并深刻理解。

图示

以此类推。最终我们发现left和tright只会++,不会回退,而且数据就像是进出窗口一样,所以我们这种方法被称为滑动窗口。

代码

复制代码
class Solution {
public:
    int minSubArrayLen(int target, vector<int>& nums) 
    {
        int left,right;
        int len = INT_MAX;
        int sum = 0;

        for(left=0,right=0; right<nums.size(); right++)
        {
            sum += nums[right];
            while(sum >= target)
            {
                len = min(len,right-left+1);

                left++;
                sum -= nums[left-1];
            }
        }
        return len == INT_MAX ? 0 : len;
    }
};
相关推荐
Jiangxl~8 分钟前
IP数据云如何为不同行业提供精准IP查询与风险防控解决方案?
网络·网络协议·tcp/ip·算法·ai·ip·安全架构
李伟_Li慢慢36 分钟前
wolfram详解山峦算法
前端·算法
counting money1 小时前
prim算法最小生成树(java)
算法
澈2071 小时前
C++面向对象:类与对象核心解析
c++·算法
用户690673881921 小时前
基于无人机的单目测距系统,平均误差仅2.12%
算法
6Hzlia1 小时前
【Hot 100 刷题计划】 LeetCode 141. 环形链表 | C++ 哈希表直觉解法
c++·leetcode·链表
dinl_vin1 小时前
LangChain 系列·(四):RAG 基础——给大模型装上“外脑“
人工智能·算法·langchain
探物 AI2 小时前
【感知·医学分割】当 YOLOv11 杀入医学赛道:先检测后分割的级联架构
算法·yolo·计算机视觉·架构
隔壁大炮2 小时前
Day06-08.CNN概述介绍
人工智能·pytorch·深度学习·算法·计算机视觉·cnn·numpy
白云千载尽2 小时前
前馈与反馈——经典控制理论中的基础概念
人工智能·算法