( 数组) 209. 长度最小的子数组——【Leetcode每日一题】

news2024/11/18 11:49:47

❓209. 长度最小的子数组

难度:中等

给定一个含有 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 < = t a r g e t < = 1 0 9 1 <= target <= 10^9 1<=target<=109
  • 1 < = n u m s . l e n g t h < = 1 0 5 1 <= nums.length <= 10^5 1<=nums.length<=105
  • 1 < = n u m s [ i ] < = 1 0 5 1 <= nums[i] <= 10^5 1<=nums[i]<=105

进阶:

如果你已经实现 O(n) 时间复杂度的解法, 请尝试设计一个 O(nlog(n)) 时间复杂度的解法。

💡思路:滑动窗口

定义两个指针 ij 分别表示子数组(滑动窗口窗口)的开始位置结束位置,维护变量 sum 存储子数组中的元素和(即从 nums[i]nums[j] 的元素和)。

初始状态下, ij 都指向下标 0sum 的值为 0:

  • 每一轮迭代,将 nums[j] 加到 sum,如果 sum ≥ target,则更新子数组的最小长度(此时子数组的长度是 j − i + 1
  • 然后将 nums[i]sum 中减去并将 i 右移,直到 sum < target,在此过程中同样更新子数组的最小长度。
  • 在每一轮迭代的最后,将 j 右移。

在这里插入图片描述

🍁代码:(Java、C++)

Java

class Solution {
    public int minSubArrayLen(int target, int[] nums) {
    	int i = 0; // 滑动窗口起始位置
        int sum = 0; // 滑动窗口数值之和
        int ans = Integer.MAX_VALUE;
        for(int j = 0; j < nums.length; j++){
            sum += nums[j];//窗口内所有数的和
            while(sum >= target) {//窗口内所有数的和大于target,则前移i(起始位置)
                ans = ans < j - i + 1 ? ans : j - i + 1;
                sum -= nums[i++];// 这里体现出滑动窗口的精髓之处,不断变更i(子序列的起始位置)
            }
        }
        return ans == Integer.MAX_VALUE ? 0 : ans;
    }
}

C++

class Solution {
public:
    int minSubArrayLen(int target, vector<int>& nums) {
        int i = 0; // 滑动窗口起始位置
        int sum = 0; // 滑动窗口数值之和
        int ans = INT_MAX;
        for(int j = 0; j < nums.size(); j++){
            sum += nums[j];//窗口内所有数的和
            while(sum >= target) {//窗口内所有数的和大于target,则前移i(起始位置)
                ans = ans < j - i + 1 ? ans : j - i + 1;
                sum -= nums[i++];// 这里体现出滑动窗口的精髓之处,不断变更i(子序列的起始位置)
            }
        }
        return ans == INT_MAX ? 0 : ans;
    }
};

🚀 运行结果:

在这里插入图片描述

🕔 复杂度分析:

  • 时间复杂度 O ( n ) O(n) O(n),其中 n 为数组的长度。
  • 空间复杂度 O ( 1 ) O(1) O(1)

题目来源:力扣。

放弃一件事很容易,每天能坚持一件事一定很酷,一起每日一题吧!
关注我LeetCode主页 / CSDN—力扣专栏,每日更新!

注: 如有不足,欢迎指正!

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

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

相关文章

【ArcGIS Pro二次开发】(30):数据定义语言DDL详解

在之前的文章【ArcGIS Pro二次开发】(19)&#xff1a;创建要素类&#xff08;FeatureClass&#xff09;中有涉及DDL的知识点&#xff0c;随着深入的学习&#xff0c;在这里做一个小总结。 一、DDL基本概念 ArcGIS Pro二次开发中的DDL API是一种【数据定义语言】&#xff0c;主…

【Web服务器集群】Web基础与HTTP协议

文章目录 一、Web基础1.域名概述1.1域名的概念1.2域名解析1.3域名空间结构 2.域名注册3.网页的概念4.HTML概述4.1HTML概念4.2HTML文档的结构 5.网页基本标签6.Web概述7.静态网页与动态网页7.1静态网页7.2动态网页7.3动态网页语言 二、HTTP协议1.概念2.HTTP协议的版本3.HTTP方法…

pytest+requests+Python3.7+yaml+Allure+Jenkins+docker实现接口自动化

目录 接口自动化测试框架&#xff08;用例自动生成&#xff09; 项目说明 技术栈 环境部署 框架流程图与目录结构图及相关说明 1、框架流程图如下 2、代码目录结构图如下 关联详解 函数助手详解 代码设计与功能说明 1、定义运行配置文件 runConfig.yml 2、接口配置…

构建系统安全防线!Genmai安全漏洞检测框架全面解析

01 Genmai是什么&#xff1f; Genmai是由openkylin社区SecurityGovernance SIG为了挖掘、检测、验证麒麟产品的安全漏洞而主导开发的一款开源主机漏洞扫描、网络漏洞扫描以及基线扫描的安全扫描框架。其致力于能在短时间内对主流的操作系统进行安全检测&#xff0c;并确保准确…

Unity3D :使用 UXML 实例作为模板

推荐&#xff1a;将 NSDT场景编辑器 加入你的3D工具链 3D工具集&#xff1a; NSDT简石数字孪生 使用 UXML 实例作为模板 您可以将现有 UXML 文档实例化为 UXML 文档中的模板作为模板实例&#xff0c;类似于预制件 在 Unity 中工作。 使用 UXML 文档作为模板 要将项目中的现有…

「API 接口获取方法」

在创建一个应用程序的过程中&#xff0c;获取数据是非常关键的一步。而通过API接口获取数据通常是最好的方式之一。那么&#xff0c;如何通过关键字获取API接口呢&#xff1f;以下是一些步骤&#xff1a; 1.确定你需要获取的数据类型 首先&#xff0c;你需要确定你需要获取的…

深入浅出 SQL Server CDC 数据同步

简介 SQL Server 是一款老牌关系型数据库,自 1988 年由 Microsoft、Sybase 和 Ashton-Tate 三家公司共同推出&#xff0c;不断迭代更新至今&#xff0c;拥有相当广泛的用户群体。 如今&#xff0c;我们提到 SQL Server 通常指 Microsoft SQL Server 2000 之后的版本。 SQL S…

软件测试的7个级别,做到3级已经超越80%测试人!

有人说&#xff1a;软件测试就是最low的点点点工作。 有人说&#xff1a;测试工作职位薪水到一定程度只能原地踏步无法提升 也有人说&#xff1a;测试行业相对于开发来说技术性很低&#xff0c;容易被取代。 这其实是对测试行业最大的误解。测试可深可浅&#xff0c;可窄可广…

linux嵌入式学习

https://www.runoob.com/linux/linux-comm-ls.html https://www.bilibili.com/video/BV1w4411B7a4?p19&spm_id_frompageDriver&vd_sourcee7d12c9f66ab8294c87125a95510dac9 1 eMMC eMMC&#xff08;embedded MultiMediaCard&#xff09;是一种集成电路&#xff0c;用…

vue2+wangeditor富文本域

vue2wangeditor富文本域 效果图安装依赖初始化简约模式自定义模式图片设置只允许 base64 方式支持图片服务器 更多配置项目依赖项目代码 效果图 安装依赖 npm i wangeditor/editor wangeditor/editor-for-vue初始化 <template><div class"editor-box">…

IIS 日志解析,增强 IIS 服务器安全性

企业严重依赖 Microsoft Internet 信息服务 &#xff08;IIS&#xff09; 服务器来托管其网页和 Web 应用程序&#xff0c;以及存储其文件。请务必妥善保护您的 IIS 服务器&#xff08;包括 Web 和 FTP&#xff09;。 什么是 IIS 日志 IIS 日志是 Microsoft IIS Web 服务器上…

柔顺机构学读书笔记1:悬臂梁变形

题目&#xff1a; 如图考虑悬臂梁&#xff0c;材料各向同性&#xff0c;即各个方向上的弹性模量和强度都相同。如果在x方向上作用一个可使最大应力等于屈服强度 S S S的力 F x F_x Fx​时&#xff0c; x x x轴方向的变形为多少&#xff0c;书上给出了答案&#xff1a; 我们来验…

网易有道财报:网易有道2023财年收入将强劲增长,亏损将减少?

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 预计2023年收入增长强劲&#xff0c;净亏损收窄 猛兽财经认为网易有道&#xff08;DAO&#xff09;今年是有能力实现更多的收入增长和减少亏损的。具体来说&#xff0c;我们预计网易有道的收入将在2023财年增长至少20%&am…

Semantic Kernel VS LangChain

每当向他人介绍 Semantic Kernel&#xff0c;会得到的第一个问题就是 Semantic Kernel 类似于 LangChain 吗&#xff1f;或者是 C# 版本的 LangChain 吗&#xff1f;因此我总结了这篇文章。 微软MVP实验室研究员 张善友 深圳友浩达 CTO & 首席架构师&#xff0c;微软最有价…

进程间通信-system V共享内存

文章目录 1. system V共享内存1.1 共享内存示意图 2. 共享内存函数2.1 shmget函数2.2 代码实现2.2.1 shmat2.2.2 shmdt 3. 信息量 1. system V共享内存 system V的意思是一套标准&#xff0c;共享内存区是最快的IPC形式。一旦这样的内存映射到共享它的进程的地址空间&#xff…

AI遇上建筑设计,是出圈还是翻车?

AIGC 落地&#xff0c;始于场景&#xff0c;终于价值。 去年以来出现了 AIGC 热潮&#xff0c;引发了 AIGC 及其应用话题的爆发性增长&#xff0c;不少人感慨强人工智能的时代已经离我们不那么遥远了。但是在热潮的另一面&#xff0c;我们看到真正能落地的场景依然是凤毛麟角&a…

【C语言】结构体指针

结构体指针 结构体基础知识注意对于成员的赋值 结构体指针指向结构体变量的指针结构体指针与结构体成员指针用结构体指针引用结构体成员 结构体 基础知识 初识结构体&#xff0c;可以先看这篇浅显易懂的文章结构体–基础篇 所谓结构体&#xff0c;是一组类型可以不同的相关变…

部署输配电线路火灾隐患排查治理

输电线路防山火在线监测装置 一、产品描述&#xff1a; 电力设施为了远离人们的生活区域选择部分扎根在森林里面&#xff0c;减少发生触电事故的发生。但是提到森林就不得不说其中一个山火问题&#xff0c;山火灾害对建设在森林的电力设施造成的损害不可预估&#xff0c;为保障…

CodeForces.1806A .平面移动.[简单][判断可达范围][找步数规律]

题目描述&#xff1a; 题目解读&#xff1a; 给定移动规则以及起始点&#xff0c;终点&#xff1b;分析终点是否可达&#xff0c;可达则输出最小步数。 解题思路&#xff1a; 首先要判定是否可达。画图可知&#xff0c;对于题目给定的移动规则&#xff0c;只能到达起始点(a,b…

Go 开发实践:手把手教你搭建一个登录功能

本文首发自「慕课网」 &#xff0c;想了解更多IT干货内容&#xff0c;程序员圈内热闻&#xff0c;欢迎关注"慕课网"及“慕课网公众号”&#xff01; 作者&#xff1a;Codey|慕课网讲师 用 Go 语言搭建简易登录功能 如果你最近刚学习Go 语言基础特性&#xff0c;对 …