稀碎从零算法笔记Day6-LeetCode:长度最小的子数组

前言:做JD的网安笔试题,结果查找子串(单词)这个操作不会。痛定思痛,决定学习滑动数组

题型:数组、双指针、滑动窗口

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

来源:LeetCode 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

题目描述

给定一个含有 n 个正整数的数组和一个正整数 target 。

找出该数组中满足其总和大于等于 target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度如果不存在符合条件的子数组,返回 0 。

题目样例

示例 1:

输入:target = 7, nums = [2,3,1,2,4,3]
输出:2
解释:子数组 [4,3] 是该条件下的长度最小的子数组。

示例 2:

输入:target = 4, nums = [1,4,4]
输出:1

示例 3:

输入:target = 11, nums = [1,1,1,1,1,1,1,1]
输出:0

提示:

  • 1 <= target <= 109
  • 1 <= nums.length <= 105
  • 1 <= nums[i] <= 105

题目思路

初见:用两个for循环,把字符串遍历一遍(相当于把父串中所有的子串的情况全列出来,然后看看string是否相等)。这样时间复杂度太高,而且练不到滑动窗口。

探索:本着用滑动窗口的目的,方法自然也锁定了下来。【滑动窗口】本质上还是【双指针】进行操作。题目中有【子串】、【最大串】、【最小串】等字眼时可以考虑使用【滑动窗口】。

主要思路就是①【right指针】后移,然后看【总和】时候满足题目条件(本题条件为:总和>=target)②如果满足条件,记录【当前窗口的长度】后,让【left】指针后移,再看看【窗口内元素】的和,是否依然满足条件..

C++代码

因为暴力没有实现,这里只贴滑动窗口的code。

class Solution {
public:int minSubArrayLen(int target, vector<int>& nums) {int left=0,len=nums.size(),answer=INT_MAX,sum=0;for(int right=0;right<len;right++){sum=sum+nums[right];// 条件:sum>=targetwhile(sum>=target){//让answer的值可以一直变answer=min(answer,right-left+1);sum-=nums[left];left++;}}//answer==len-1,说明answer的值没变过,说明right一直移动了,都没能sum>=targetreturn answer==INT_MAX? 0 : answer ;}
};

结算页面

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

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

相关文章

关于yolov8的DFL模块(pytorch以及tensorrt)

先看代码 class DFL(nn.Module):"""Integral module of Distribution Focal Loss (DFL).Proposed in Generalized Focal Loss https://ieeexplore.ieee.org/document/9792391"""def __init__(self, c116):"""Initialize a convo…

使用 SPL 高效实现 Flink SLS Connector 下推

作者&#xff1a;潘伟龙&#xff08;豁朗&#xff09; 背景 日志服务 SLS 是云原生观测与分析平台&#xff0c;为 Log、Metric、Trace 等数据提供大规模、低成本、实时的平台化服务&#xff0c;基于日志服务的便捷的数据接入能力&#xff0c;可以将系统日志、业务日志等接入 …

DevExpress报表-->更换数据库连接

今天遇到了一个问题&#xff0c;因公司更换IP地址&#xff0c;原先连接报表数据库的IP地址也因此更改。但是&#xff0c;我不知道如何直接修改连接报表的数据。为了解决这个问题&#xff0c;我决定给大家演示一下具体的操作步骤。 换句话说: 将DevExpress报表直接从一个电脑的…

Unity UGUI之InputField(TMP)基本了解

Unity的InputField组件是用于在Unity中创建可供用户输入文本的输入框的UI组件。通过InputField组件&#xff0c;可以让用户在运行时输入文本&#xff0c;比如用户名、密码、搜索关键字等。其中TMP版本的InputField是基于TextMeshPro的InputField组件&#xff0c;提供了更多的文…

李国庆喊话雷军建议小米汽车降在20万内

尊敬的雷军先生&#xff1a; 近日&#xff0c;小米汽车的问世引起了业界内外的广泛关注&#xff0c;作为一位企业家和消费者&#xff0c;我对此深感振奋。然而&#xff0c;在欣喜之余&#xff0c;我也想向您提出一个建议&#xff1a;将小米汽车的价格定位在20万以内。 首先&am…

第三讲 汇编初步 课程随手记

一、寄存器 32位CPU通用寄存器如下图所示&#xff1a; 因为教材依照的是32位CPU寄存器&#xff0c;而我安装的是64位寄存器&#xff0c;所以找了一下64位的寄存器的资料 PS&#xff1a;一般来说&#xff0c;Intel处理器字节存储顺序为小端法存储&#xff0c;是指数据的高字节保…

【国家机关办公建筑 大型公共建筑的能耗监测、集中统一管理】安科瑞能耗监测系统整体解决方案

背景 为全面推进大型公建节能管理工作&#xff0c;需建立大型公建节能监管体系&#xff0c;逐步建立起全国联网的大型公建能耗监测平台&#xff0c;在大型公建安装分项计量装置&#xff0c;通过远程传输等手段及时采集分析能耗数据&#xff0c;实现对大型公建的实时动态监测、汇…

redis 性能优化一

目录 前言 尾延迟 前言 说到redis 性能优化&#xff0c;优化的目的是什么&#xff1f;提高响应&#xff0c;减少延迟。就要关注两点&#xff0c;一是尾延迟&#xff0c;二是Redis 的基线性能。只有指标&#xff0c;我们的优化&#xff0c;才有意义&#xff0c;才能做监控以及…

Vue:双token无感刷新

文章目录 初次授权与发放Token&#xff1a;Access Token的作用&#xff1a;Refresh Token的作用&#xff1a;无感刷新&#xff1a;安全机制&#xff1a;后端创建nest项目AppController 添加login、refresh、getinfo接口创建user.dto.tsAppController添加模拟数据 前端Hbuilder创…

app逆向-ratel框架-AES,DES,MD5,SHA1加密算法java hook程序

一、前言 AES&#xff08;高级加密标准&#xff09;、DES&#xff08;数据加密标准&#xff09;、MD5&#xff08;消息摘要算法5&#xff09;和SHA-1&#xff08;安全哈希算法1&#xff09;都是常见的加密算法&#xff0c;用于数据加密和哈希计算。 二、加密算法实现 1、创建…

掌握 Vue3、Vite 和 SCSS 实现一键换肤的魔法步骤

前言 一个网站的换肤效果算是一个比较常见的功能&#xff0c;尤其是在后台管理系统中&#xff0c;我们几乎都能看到他的身影&#xff0c;这里给大家提供一个实现思路。 搭建项目 vitevue3搭建项目这里就不演示了&#xff0c;vite官网里面讲得很清楚。 注&#xff1a;这里使…

Docker数据卷的挂载

目录 1 概念 2 常用命令 3 操作步骤(主要讲在创建容器时的挂载) 3.1 挂载在默认目录 3.2 挂载在自定义目录 4 附加内容(查看容器的挂载情况) 1 概念 数据卷&#xff08;volume&#xff09;是一个虚拟目录&#xff0c;是容器内目录与宿主机目录之间映射的桥梁。这样容器内…