【LeetCode滑动窗口算法】长度最小的子数组 难度:中等

 我们先看一下题目描述:f0b214303e814dccac0f546fce99a0bc.png

fd0d741ce3f64adc862e4c7df0bfdfc3.png

b72ad29be946429fa2fe0d6e18207610.png

解法一:暴力枚举

时间复杂度:o(n^3)

class Solution {
public:int minSubArrayLen(int target, vector<int>& nums){int i = 0, j = 0;vector<int> v;for (;i < nums.size();i++){int sum = nums[i];for (j = i + 1;j < nums.size();j++){sum = sum + nums[j];if (target == sum){v.push_back(j - i + 1);//j-i+1就是满足条件的子数组的长度break;}}}if (v.empty())return 0;else{sort(v.begin(), v.end());return v[0];}}
};

解法2:利用数组元素的单调性,滑动窗口(同向双指针)算法。

时间复杂度: o(n)

滑动窗口怎么用呢?

1、left=0,right=0

2、进窗口-->判断是否满足条件-->否-->进窗口

                                                      是-->更新结果-->出窗口-->更新结果

滑动窗口算法主要是利用数组元素之和的单调性,规避了很多没有必要的枚举行为。

下面是滑动窗口算法的演示:

bdc828de427d4a3293d884988888e5d0.pngc13020351f3d4829a2d1d7105dc0258a.png

db9663067ee24cf6a431839e0b454276.png 011bae627f5a4ddbb8f8ae530733dd53.png

3ec3649cc64642059686f75ea4c2e7ef.png af4ea62eb82e4383b127f9e36e36a21e.png

下面我们来实现一下基于滑动窗口算法的解题代码:

class Solution {
public:int minSubArrayLen(int target, vector<int>& nums){int sum = 0, len = INT_MAX;for (int left = 0, right = 0;right < nums.size();right++){sum += nums[right];//进入窗口while (sum >= target)//判断{len = min(len, right - left + 1);//更新结果sum -= nums[left++];//出窗口}}return len == INT_MAX ? 0 : len;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/26706.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

人工智能革命:2024年指数报告揭示AI行业十大趋势

随着科技的飞速发展&#xff0c;人工智能&#xff08;AI&#xff09;正逐渐渗透到我们生活的方方面面。斯坦福大学李飞飞教授领导的斯坦福以人为本人工智能研究所&#xff08;HAI&#xff09;发布的《2024年人工智能指数报告》为我们揭示了AI行业的最新趋势和未来的发展方向。以…

【外汇天眼】交易智慧:遵循趋势,稳中求胜

在交易中&#xff0c;新手往往因对未来走势的不确定性感到恐惧&#xff0c;从而不断要求对市场进行全面分析。这种需求反映了他们在投机心理幼稚期缺乏安全感的表现。有些勤奋的交易者甚至在做单前、持仓时和寻找出局理由时都在不断分析行情。然而&#xff0c;这种过度分析真的…

搜维尔科技:Movella旗下的Xsens在人形机器人开发中得到广泛应用

人形机器人的发展正在全球范围内受到广泛关注。作为机器人领域的重要分支&#xff0c;人形机器人因其具备高度仿真的外观和动作&#xff0c;以及更贴近人类的行为模式&#xff0c;有望逐渐成为人们日常生活和工业生产中的得力助手。在中国&#xff0c;这一领域的发展尤为引人注…

C++ 30 之 new 和 delete 关键字

#include <iostream> #include <string.h> using namespace std;class Students08{ public:Students08(){cout << "students08的默认构造函数"<< endl;}Students08(int a){cout << "students08的有参构造函数"<< endl…

Mac vscode could not import github.com/gin-gonic/gin

问题背景&#xff1a; 第一次导入一个go的项目就报红 问题分析&#xff1a; 其实就是之前没有下载和导入gin这个web框架包 gin是一个golang的微框架&#xff0c;封装比较优雅&#xff0c;API友好&#xff0c;源码注释比较明确。 问题解决&#xff1a; 依次输入以下命令。通…

nest : 无法加载文件 C:\Users\admin\AppData\Roaming\npm\nest.ps1,因为在此系统上禁止运行脚本。

完整报错&#xff1a; nest : 无法加载文件 C:\Users\admin\AppData\Roaming\npm\nest.ps1&#xff0c;因为在此系统上禁止运行脚本。有关详细信息&#xff0c;请参阅 https:/go.microsoft.com/fwlink/?LinkI D135170 中的 about_Execution_Policies。 问题原因&#xff1a; …

多校园跑腿小程序源码系统 帮取+代拿+外卖配送 功能超多 带完整的安装代码包+搭建部署教程

系统概述 多校园跑腿小程序源码系统 是一款基于微信小程序平台开发的全功能校园服务应用。该系统采用先进的前后端分离架构&#xff0c;结合云服务技术&#xff0c;确保了系统的高可用性、可扩展性和安全性。系统设计之初就充分考虑到了多校园环境的特殊性&#xff0c;支持多校…

分享一份 .NET Core 简单的自带日志系统配置,平时做一些测试或个人代码研究,用它就可以了

前言 实际上&#xff0c;.NET Core 内部也内置了一套日志系统&#xff0c;它是一个轻量级的日志框架&#xff0c;用于记录应用程序的日志信息。 它提供了 ILogger 接口和 ILoggerProvider 接口&#xff0c;以及一组内置的日志提供程序&#xff08;如 Console、Debug、EventSo…

QtScrcpy最出色的C++开源手机投屏控制软件

QtScrcpy是一款开源的跨平台屏幕录制和投屏工具 基本概述&#xff1a; 它基于Android的ADB&#xff08;Android Debug Bridge&#xff09;和Electron框架&#xff0c;为用户提供了简洁且功能强大的用户界面。 支持平台&#xff1a; QtScrcpy支持Windows、macOS和Linux三大…

Spring Boot + Mybatis Plus实现登录注册

Spring Boot 实现登录注册 1. 注册 业务逻辑 客户端输入注册时需要的用户参数&#xff0c;比如&#xff1a;账户名、密码、确认密码、其他服务端接收到客户端的请求参数进行校验&#xff0c;然后判断是否有误&#xff0c;有误的地方就将错误信息抛出将密码进行加密之后存储到…

uni-ui:基于uni-app的全端兼容高性能UI框架

一、引言 在移动应用开发领域&#xff0c;跨平台框架因其能够降低开发成本、提高开发效率而备受开发者青睐。其中&#xff0c;uni-app作为一个使用Vue.js开发所有前端应用的框架&#xff0c;不仅支持编译到iOS、Android、H5、以及各种小程序等多个平台&#xff0c;还因其丰富的…

现代X86汇编-C和ASM混合编程举例

端午假期安装好了vs c2022,并写了个简单的汇编代码&#xff0c;证明MASM真的可以运行。今天需要搞一个实实在在的C和ASM混合编程的例子&#xff0c;因为用纯汇编的求伯君写WPS的时代一去不复返了。个别关键函数用汇编&#xff0c;充分发挥CPU的特色功能&#xff0c;偶尔还是需要…

Python自动化

python操作excel # 安装第三个库 cmd -> pip install xlrb 出现success即安装成功 # 导入库函数 import xlrb # 打开的文件保存为excel文档对象 xlsx xlrb.open_workbook("文件位置") # C:\Users\Adminstator\Desktop\学生版.xlsx # 操作工作簿里的工作表 # 1.…

关于FPGA对 DDR4 (MT40A256M16)的读写控制 I

关于FPGA对 DDR4 &#xff08;MT40A256M16&#xff09;的读写控制 I 语言 &#xff1a;Verilg HDL EDA工具&#xff1a;ISE、Vivado 关于FPGA对 DDR4 &#xff08;MT40A256M16&#xff09;的读写控制 I一、引言二、DDR4的特性&#xff08;MT40A256M16&#xff09;&#xff08;1…

git clone 项目报“鉴权失败”的解决办法

#问题展示# git clone https://gitee.com/soaringsoft/.....git 正克隆到...... Username for https://gitee.com:...... Password for https://.....gitee.com:...... remote: [session-1440f183] Unauthorized fatal: git clone https://gitee.com/soaringsoft/.....gi…

【perfetto分析性能学习笔记】

1.perfetto网站 https://ui.perfetto.dev/ 2.快捷键 3.线程状态分析 Runnable 表示线程正在运行或者等待CPU执行 Runnable (Preempted) 表示线程正在运行&#xff0c;但在运行过程中被其他高优先级线程抢占 Running 表示线程正在运行 Uninterruptible Sleep Uninterru…

ComfyUI-APISR 动漫的超分模型

本文参考 https://github.com/ZHO-ZHO-ZHO/ComfyUI-APISR/tree/main 介绍 APISR&#xff1a;专门用于动漫的超分模型&#xff0c;包含 2x 和 4x 双模型&#xff0c;速度飞快&#xff0c;效果很好。 APISR 模型加载 | &#x1f50e;APISR ModelLoader 支持 2 种官方模型&#…

动态规划、贪心在数组中的应用-334. 递增的三元子序列、300. 最长递增子序列

题目链接及描述 334. 递增的三元子序列 - 力扣&#xff08;LeetCode&#xff09; 300. 最长递增子序列 - 力扣&#xff08;LeetCode&#xff09; 题目分析 300. 最长递增子序列 - 力扣&#xff08;LeetCode&#xff09; 最长递增子序列作为一道经典的动态规划题目&#xff0c…

vue+elementplus模拟“山野愚人居”简单实现个人博客

目录 一、项目介绍 二、项目截图 1.项目结构图 2.项目首页 3.文章详情 4.留言 5.读者 三、源码实现 1.项目依赖package.json 2.项目启动 3.读者页面源码 四、总结 一、项目介绍 模仿原博客&#xff1a;山野愚人居 - 记录我的生活、所见、所闻、所想…… 本项目参考以…

UITableView初识之分组显示数据Demo

基本介绍 继承自UIScrollView&#xff0c;因此可以滚动。 需要Datasource 遵循UITableViewDataSource协议的OC对象&#xff0c;都可以是UITableView的数据源&#xff0c;该协议中的方法告诉UITableView如何显示数据。 关于UITableView UITableView显示分组数据&#xff0c;对应…