栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

209. 长度最小的子数组(C++实现)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

209. 长度最小的子数组(C++实现)

209. 长度最小的子数组

209. 长度最小的子数组


思路–滑动窗口

用滑动窗口能够解决本问题:
窗口就是 满足其和 ≥ s 的长度最小的 连续 子数组。

窗口的起始位置如何移动:如果当前窗口的值大于target 了,窗口就要向前移动了。

窗口的结束位置如何移动:窗口的结束位置就是遍历数组的指针,窗口的起始位置设置为数组的起始位置就可以了。


class Solution {
public:
    int minSubArrayLen(int target, vector& nums) {
        //思路:滑动窗口:
        int sum = 0; // 求和
        int sublength = 0; //临时保存滑动窗口的长度
        int result = INT_MAX;
        int end = 0; // 滑动窗口末位置
        int begin = 0;// 滑动窗口其实位置

        for(;end= target){ //当窗口的值大于目标值时候,就开始缩小滑动窗口大小
                sublength = end - begin +1;
                result = result < sublength ? result :sublength;
                sum -= nums[begin]; //缩小窗口时候,记得把窗口值总和
                begin++; //缩小滑动窗口的大小
            }
        }
        return result == INT_MAX ? 0 : result;
    }
};
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/767331.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号