news 2026/7/7 2:29:05

力扣 长度最小的子数组

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
力扣 长度最小的子数组

一、题目概述

给定一个含有n正整数的数组nums和一个正整数target
请找出该数组中满足其和 ≥ target 的长度最小的连续子数组,并返回其长度。
如果不存在符合条件的子数组,则返回0


二、问题分析

1, 连续子数组 + 求最小长度

题目要求的是:

  • 连续子数组(不是子序列)

  • 和 ≥ target

  • 长度最小

这三个条件共同决定了本题非常适合使用滑动窗口(双指针)方法。


2, 为什么不能暴力枚举?

暴力做法是:

  • 枚举所有子数组

  • 计算每个子数组的和

时间复杂度为:

O(n²)

在数据规模较大时必然超时 ❌。


三、滑动窗口核心思想

滑动窗口的本质

维护一个区间[left, right],并保证:

  • right向右扩展:增加窗口内的元素

  • 当窗口内的和 ≥ target时:

    • 尝试移动left缩小窗口

    • 更新最小长度


适用条件

⚠️本题能够使用滑动窗口的关键前提是:

数组中的元素全部为正整数

因为只有正整数,窗口右移时,区间和才会单调递增
左移时才会单调递减

四、算法步骤详解

  1. 初始化:

    • left = 0

    • sum = 0

    • ans = n + 1(表示未找到)

  2. right0开始遍历数组:

    • nums[right]加入sum

  3. sum >= target时:

    • 更新最小长度:ans = min(ans, right - left + 1)

    • 移动left,缩小窗口:sum -= nums[left] left++

  4. 遍历结束: 如果ans未更新,返回0否则返回ans

五、代码

class Solution { public: int minSubArrayLen(int target, vector<int>& nums) { int n = nums.size(); int left = 0; int sum = 0; int ans = n + 1; for (int right = 0; right < n; right++) { sum += nums[right]; while (sum >= target) { ans = min(ans, right - left + 1); sum -= nums[left]; left++; } } return ans == n + 1 ? 0 : ans; } };
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/7 15:33:32

运行期通过调试动态修改 SAP UI5 控件 formatOptions 的实战指南

运行期通过调试动态修改控件 formatOptions 的实战指南:以 DatePicker 的 style 从 long 切到 medium 为例 在客户系统做验证时,经常会遇到一种很尴尬的场景:你明明只想对某个界面做一个极小的显示对比(例如把日期显示从长格式改成中等格式),但应用来自标准交付、Fiori …

作者头像 李华
网站建设 2026/7/7 11:47:59

SSL证书问题排查效率提升300%的自动化方案

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个效率对比工具&#xff1a;1. 模拟传统排查流程(手动检查证书链/验证信任库/测试握手过程)&#xff1b;2. 实现AI自动化诊断流程(自动日志分析/配置检查/问题定位)&#xff…

作者头像 李华
网站建设 2026/7/7 20:20:11

AI助力:如何用代码自动解析和操作DrawIO文件

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个Python脚本&#xff0c;使用DrawIO的XML解析库&#xff08;如xml.etree.ElementTree&#xff09;读取.drawio文件内容&#xff0c;提取所有图形元素和连接关系。然后添加功…

作者头像 李华
网站建设 2026/7/7 20:20:58

对比传统方法:AI实现no-referrer策略配置效率提升300%

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个性能对比工具&#xff0c;能够自动测试人工配置和AI辅助配置no-referrer-when-downgrade策略的效率差异。要求包含测试用例生成、执行时间统计、配置准确性验证等功能&…

作者头像 李华
网站建设 2026/7/7 10:20:23

SOGI PLL锁相环在STM32F3并网逆变中的应用

stm32F3平台&#xff0c;基于sogi pll锁相环的并网逆变资料&#xff0c;含原理图和代码 在风光储系统中&#xff0c;逆变器的并网控制是关键环节。电网电压的相位和频率是并网逆变器的控制基准&#xff0c;锁相环技术是获取电网同步信号的核心方法。锁相环&#xff08;PLL&…

作者头像 李华
网站建设 2026/7/7 7:28:47

传统二维码开发vs AI生成:效率提升300%

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 请生成一个对比报告&#xff1a;1. 传统方式开发一个基础二维码组件需要多少时间&#xff1b;2. 使用AI工具生成相同功能组件需要多少时间&#xff1b;3. 功能扩展时的效率对比&…

作者头像 李华