稀碎从零算法笔记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.mzph.cn/news/723039.shtml

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

相关文章

(学习日记)2024.03.06:UCOSIII第八节:空闲任务+阻塞延时+main函数修改

写在前面&#xff1a; 由于时间的不足与学习的碎片化&#xff0c;写博客变得有些奢侈。 但是对于记录学习&#xff08;忘了以后能快速复习&#xff09;的渴望一天天变得强烈。 既然如此 不如以天为单位&#xff0c;以时间为顺序&#xff0c;仅仅将博客当做一个知识学习的目录&a…

CSS字体样式值,前端开发基础学习

元素特点&#xff1a; 块状元素&#xff1a; 在页面中以矩形区域显示。自上而下排列&#xff0c;独占一行可以直接添加宽高一般情况下&#xff0c;作为其他元素或内容的容器 行内元素&#xff1a; 在页面中最小单位也是矩形。在一行内逐个排列。不可以直接添加宽高&#xf…

VGG16-CF-VGG11实验报告

说明&#xff1a;VGG16和CF-VGG11是论文《A 3D Fluorescence Classification and Component Prediction Method Based on VGG Convolutional Neural Network and PARAFAC Analysis Method》使用的两种主要模型。其对应代码仓库提供了实验使用的数据集、平行因子分析结果和CNN模…

vue3 (二)v-model高级用法

1、子组件可以无需使用事件&#xff0c;直接通过this.$emit(update:modelValue, newValue) 修改父组件的数据 前置条件&#xff1a; (1).父组件通过 v-model 绑定自身数据&#xff08;可传递给子组件&#xff09; (2).子组件通过props中的 modelValue 来接收数据 (3).子组件通…

5.47 BCC工具之oomkill.py解读

一,工具简介 oomkill工具用于跟踪 Linux 的内存溢出(OOM)查杀,并在每行显示一个 OOM 杀死的基本详细信息。 二,代码示例 #!/usr/bin/env pythonfrom bcc import BPF from time import strftime# linux stats loadavg = "/proc/loadavg"# 定义 BPF程序 bpf_te…

OWASP Top 10 网络安全10大漏洞——A01:2021-访问控制中断

10大Web应用程序安全风险 2021年top10中有三个新类别、四个类别的命名和范围变化&#xff0c;以及一些合并。 A01&#xff1a;2021-访问控制中断 从第五位上升到top1&#xff0c;94%的应用程序都经过了某种形式的访问控制破坏测试&#xff0c;平均发生率为 3.81%且在贡献的…

flutter弹窗输入,Android学习的三个终极问题及学习路线规划

题库非常全面包括&#xff1a; Android基础知识: 基本涵盖Android所有知识体系&#xff0c;四大组件&#xff0c;Fragment,WebView,事件分发&#xff0c;View绘制…Java基础知识&高阶知识点: 基础部分不谈了&#xff0c;高阶部分&#xff1a;泛型&#xff0c;反射&#xff…

蓝桥杯刷题(一)

一、 import os import sys def dps(s):dp [0] * len(s)dp[0] ord(s[0]) - 96if len(s) 1:return dp[-1]dp[1] max(ord(s[0]) - 96, ord(s[1]) - 96)for i in range(2, len(s)):dp[i] max(dp[i - 1], dp[i - 2] (ord(s[i])) - 96)return dp[-1] s input() print(dps(s))…

【SpringBoot3.x教程 01】SpringBoot简介及工程搭建

前言&#xff1a;什么是SpringBoot&#xff1f; SpringBoot是一个开源的Java基础框架&#xff0c;它被设计来简化Spring应用的初始搭建以及开发过程。这个框架利用了“约定优于配置”的理念&#xff0c;提供了一系列大型项目中常用的默认配置&#xff0c;让开发者可以快速启动和…

stm32学习笔记:I2C通信外设原理(未完)

软件实现和硬件实现 串口通信为异步时序&#xff0c;用软件实现很麻烦&#xff0c;基本上用硬件实现 而I2C协议通信为同步时序&#xff0c;软件实现简单且灵活&#xff0c;硬件实现比较麻烦&#xff0c;故软件比较常用 但I2C硬件实现功能比较大&#xff0c;执行效率高&#xff…

【OpenCV C++】将float数据和字符串一起打印在iamge上 ,stringstream数值转字符串 VS sprintf_s 数值转字符串

文章目录 1 功能需求2 函数实现2.1 image_utils.h文件2.2 image_utils.cpp方法1—— 用stringstream 将 float 值转换为字符串2.3 函数调用3 image_utils.cpp方法2—— 用 sprintf_s()将 float 值转换为字符串3.2 两种float 转换方法对比——stringstream转换 VS sprintf_s 转换…

Linux clock命令教程:如何查看和设置硬件时钟(附实例详解和注意事项)

Linux clock命令介绍 clock命令是用于查看和设置硬件时钟的信息。硬件时钟是由BIOS设置的&#xff0c;用于在系统关闭时保持时间。 Linux clock命令适用的Linux版本 clock命令在大多数Linux发行版中都可以使用&#xff0c;包括Debian、Ubuntu、Alpine、Arch Linux、Kali Lin…

【数据分享】1984~2020年中国长时间序列逐年人造夜间灯光数据集

各位同学们好&#xff0c;今天和大伙儿分享的是1984~2020年中国长时间序列逐年人造夜间灯光数据集。如果大家有下载处理数据等方面的问题&#xff0c;您可以私信或评论。 张立贤, 任浙豪, 陈斌, 宫鹏, 付昊桓, 徐冰. (2021). 中国长时间序列逐年人造夜间灯光数据集&#xff08;…

大数据开发-Hadoop分布式集群搭建

大数据开发-Hadoop分布式集群搭建 文章目录 大数据开发-Hadoop分布式集群搭建环境准备Hadoop配置启动Hadoop集群Hadoop客户端节点Hadoop客户端节点 环境准备 JDK1.8Hadoop3.X三台服务器 主节点需要启动namenode、secondary namenode、resource manager三个进程 从节点需要启动…

42岁前TVB女星近况曝光,曾因山头靠不住被雪藏兼生意失败

自从2021年前TVB高层余咏珊倒台离巢后&#xff0c;大批「余派」被雪藏&#xff0c;随即跟着走人&#xff0c;今年42岁的「元老级是非精」梁嘉琪就是其中之一。 梁嘉琪在离巢后就重新签约有线做回老本行主持节目&#xff0c;去年3月又与森美、小仪主持商台903节目《早霸王》&…

Zynq—AD9238数据采集DDR3缓存千兆以太网发送实验(二)

Zynq—AD9238数据采集DDR3缓存千兆以太网发送实验&#xff08;前导&#xff09; Zynq—AD9238数据采集DDR3缓存千兆以太网发送实验&#xff08;一&#xff09; Zynq—AD9238数据采集DDR3缓存千兆以太网发送实验&#xff08;三&#xff09; 五、实验目的 本次实验使用电脑上的…

动态规划(算法竞赛、蓝桥杯)--背包DP求具体方案

1、B站视频链接&#xff1a;E20 背包DP 求具体方案_哔哩哔哩_bilibili #include <bits/stdc.h> using namespace std; const int N1010; int v[N],w[N]; int f[N][N],p[N][N];int main(){int n,m;cin>>n>>m;for(int i1;i<n;i)cin>>v[i]>>w[i…

mybatis的xml文件如何配置能被识别

为了让MyBatis能够识别和使用XML Mapper文件&#xff0c;你需要确保这些文件被正确放置和配置。下面是确保MyBatis XML Mapper文件被识别的步骤&#xff1a; 1. 正确放置XML Mapper文件 通常&#xff0c;XML Mapper文件应该放在src/main/resources目录下。为了更好的组织这些…

uniapp的h5端保存文件

1、因为h5端不支持uni.saveFile方法保存文件&#xff0c;要使用js的第三方库来进行保存文件 1、安装file-saver&#xff1a;在项目目录中运行命令 npm install file-saver --save 来安装file-saver库 2、引入file-saver&#xff1a;使用页面import { saveAs } from file-saver…

一万字长文图文讲解sql优化,变强了

SQL语句优化是数据库性能优化中非常重要的一部分&#xff0c;特别是在处理复杂SQL语句时更为关键。在金融业务场景中&#xff0c;对于大量数据的查询和处理&#xff0c;SQL语句的优化显得尤为重要。以下是30个涵盖金融业务场景的SQL优化案例&#xff1a; 索引优化&#xff1a;…