Leetcode——数组:滑动窗口209.长度最小的子数组

server/2024/10/19 22:15:30/

题目

 

题解

当需要查找数组中某些连续的数字之和,适合使用滑动窗口

先将滑动窗口的长度设置为0,先将左侧固定,右边界向右移动,同时计算需要找的条件,直到找到可行解为止

当找到可行解后,对其进行优化,本题优化方式为将左边界向右移动,使滑动窗口内的数字个数减小,直到不符合条件为止

最后,将优化后的最优解返回,作为结果返回

代码

class Solution {
public:int minSubArrayLen(int target, vector<int>& nums) {//先判断数组长度int numSize=nums.size();if(numSize==0)  //如果数组长度为0,不用判断target值,直接返回0即可{return 0;}int resMin=INT_MAX;//先设最短数组长度为最大值,最后根据minSize是否为INT_MAX判断最终长度int left=0;     //左边界为0int right=0;    //右边界为0//滑动窗口此时长度为0int sum=0;  //滑动窗口内的值之和while(right<numSize)    //右边界向右移动,直到到达数组的右边界{sum=sum+nums[right];    //计算滑动窗口内的值之和while(sum>=target)   //当窗口中的值大于等于目标值,符合条件时,证明找到可行解,接下来对可行解进行优化{int subLen=right-left+1;    //计算滑动窗口长度if(subLen<resMin)       //如果可行解的长度小于解的初始值,更新设定值{resMin=subLen;      //将目前最优解更新}sum=sum-nums[left++];   //如果有符合条件的可行解,则将滑动窗口左侧向右移再看}right++;}return resMin==INT_MAX?0:resMin;}
};

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

相关文章

机器视觉入门基础相关概念一 ——单目相机模型

机器视觉入门基础相关概念 相机模型 引言介绍&#xff1a;如果只是希望获取图像上的一些信息&#xff08;例如特征提取、拟合等&#xff09;&#xff0c;那么我们不会对三维空间中相机的位置有所要求。但如果希望通过二维的图像去理解三维空间中摄像机的信息&#xff0c;或者是…

NFT Insider #151:The Sandbox 推出 Alpha 第4季;腾讯或将收购育碧

市场数据 加密艺术及收藏品新闻 Beeple 将于 11 月在南京德基美术馆举办个人首展 著名数字艺术家 Beeple 近日在X平台发布视频&#xff0c;宣布将于 2024 年 11 月 14 日在南京德基美术馆举办个人首次展览&#xff0c;名为《Beeple&#xff1a;来自合成未来的故事》。该展览将…

面试题:Redis(七)

1. 面试题 2. 缓存预热 当Redis暂时没有数据&#xff0c;但MySQL中有数据时&#xff0c;由程序员、中间件、写段程序提前访问该数据&#xff0c;使得数据进行回写进Redis&#xff0c;从而达到缓存预热的效果&#xff0c;这样可以使得一开始访问页面程序的用户也没有卡顿&#x…

【远程监控新体验】OpenObserve结合内网穿透无公网IP远程访问全攻略

文章目录 前言1. 安装Docker2. Docker镜像源添加方法3. 创建并启动OpenObserve容器4. 本地访问测试5. 公网访问本地部署的OpenObserve5.1 内网穿透工具安装5.2 创建公网地址6. 配置固定公网地址前言 本文主要介绍如何在Linux系统使用Docker快速本地化部署OpenObserve云原生可观…

我的JAVA项目构建

1.Maven maven就是pip 设置maven下载的的jar包位置 换源 下载插件maven-search 配置dependency 2.Tomcat 设置环境变量JAVA_HOME 设置编码方式 方框就是路径的前缀 3.Servlet 新建项目 写一个类继承HttpServlet&#xff0c;复写doGet(应对Get请求)&#xff0c;doPost(应对…

AWS S3迁移到阿里云OSS实践

本教程讲解如何将AWS S3中的数据迁移到阿里云对象存储OSS。 如果您需要将AWS S3中的数据通过专线迁移到阿里云对象存储OSS&#xff0c;请参见使用代理迁移。 概述 阿里云在线迁移服务是阿里云提供的存储产品数据通道。使用在线迁移服务&#xff0c;您可以将第三方数据轻松迁…

软件程序系统架构中MVC和三层架构分别是什么,有什么区别?

MVC&#xff08;Model-View-Controller&#xff09;和三层架构&#xff08;三层架构通常指表示层、业务逻辑层和数据访问层&#xff09;是两种常见的软件架构模式&#xff0c;它们各自有不同的设计理念和应用场景。下面详细介绍这两种架构的区别&#xff1a; 【1】MVC&#xf…

PHP WebSocket

文章目录 PHP WebSocket 介绍Laravel 8 中使用 WebSocket实现广播1. 安装 Laravel WebSockets2. 配置 WebSocket3.运行 WebSocket 服务器4. 客户端代码5. 在 Laravel 中广播事件6. 触发事件7. 监听事件 创建单聊1.创建一个用于发送单聊消息的事件2.设置消息发送3.设置路由4.客户…