当前位置: 首页 > java >正文

LeetCode209_长度最小的子数组

LeetCode209_长度最小的子数组

  • 标签:#数组 #二分查找 #前缀和 #滑动窗口
  • Ⅰ. 题目
  • Ⅱ. 示例
  • 0. 个人方法:滑动窗口

标签:#数组 #二分查找 #前缀和 #滑动窗口

Ⅰ. 题目

给定一个含有 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

0. 个人方法:滑动窗口

使用滑动窗口的思想:

  1. 定义两个指针 start 和 end 表示窗口的左右边界。
  2. 每次将 end 指向的元素加入 sum 中。
  3. 若 sum >= target,就尝试收缩左边界 start,以缩短窗口长度,同时更新最小长度 min_len。
  4. 最后如果没找到满足条件的子数组,返回 0;否则返回最小长度。
class Solution {
public:int minSubArrayLen(int target, vector<int>& nums) {int n = nums.size();int start = 0, end = 0;int sum = 0;int min_len = n + 1; // 初始化为不可能的值while (end < n) {sum += nums[end]; // 先加上当前元素end++;           // 然后移动右指针// 如果 sum >= target,尝试缩小窗口while (sum >= target) {min_len = min(min_len, end - start); // 更新最小长度sum -= nums[start]; // 尝试移除左端元素start++;            // 移动左指针}}return (min_len == n + 1) ? 0 : min_len;}
};
  • 复杂度分析

    • 时间复杂度:O(n),其中 n 是数组的长度。指针 start 和 end 最多各移动 n 次。

    • 空间复杂度:O(1)。

http://www.xdnf.cn/news/3096.html

相关文章:

  • 《跨端开发变革者:解码阿里Ant Container Engine的底层逻辑》
  • 比亚迪再获国际双奖 以“技术为王”书写中国汽车出海新篇章
  • 五款提效工具
  • 理想药用植物的特征综述-理想中药材”的系统定义-文献精读125
  • 鸿蒙文件上传-从前端到后端详解,对比jq请求和鸿蒙arkts请求区别,对比new FormData()和鸿蒙arktsrequest.uploadFile
  • 合并多个Excel文件到一个文件,并保留格式
  • PostgreSQL Patroni集群组件作用介绍:Patroni、etcd、HAProxy、Keepalived、Watchdog
  • SpringBoot+EasyExcel+Mybatis+H2实现导入
  • 力扣面试150题--删除排序链表中的重复元素 II
  • 4.29[Q]NLP-Exp2
  • uni-app - 小程序使用高德地图完整版
  • Snap7西门子PLC通信协议
  • 【Python魔法方法(特殊方法)】
  • VSCode Verilog编辑仿真环境搭建
  • 松灵PiPER强势突围,攻克具身智能“数据壁垒”
  • [逆向工程]深入理解计算机中的“栈”
  • 内容/社区APP增长:用Deeplink让用户分享的内容“一键直达”
  • 4.2.4 MYSQL的缓存策略
  • C++中vector的扩容过程是怎样的?
  • ARP渗透学习1
  • 农村供水智能化远程监控解决方案
  • std::optional 类是个啥?
  • esp32将partitions.csv文件启用到工程项目中的配置
  • antd pro4 升级 antd5
  • 深入解析:实现一个详细的日志过滤器(LogFilter)
  • 2025年渗透测试面试题总结-拷打题库25(题目+回答)
  • 30天通过软考高项-第一天
  • 刀客doc:小红书商业技术负责人苍响离职
  • 信息系统项目管理师——第10章 项目进度管理 笔记
  • 解决Ollama run qwen3:32b: Error: unable to load model问题