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

力扣(LeetCode) ——209. 长度最小的子数组(C++)

居中图片
居中图片

题目:

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

示例2:

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

解题思路:

利用滑动窗口来解决问题:

1. 初始化关键变量:
定义两个指针 leftright,均初始指向数组起始位置(下标 0),且 right 始终不超过数组长度(right < nums.size() 避免越界);
创建变量 sum,用于累计当前窗口([left, right] 区间)内元素的总和,初始值为 0;
创建变量 len,用于记录满足条件的子数组最小长度,初始值设为整数最大值 INT_MAX(方便后续通过 min 函数更新最小值)。
2. 扩展窗口累加总和:
让 right 指针从数组起始位置开始遍历(逐步扩展窗口右边界),每次遍历将当前 nums[right] 的值加入 sum,完成窗口总和的更新。
3. 收缩窗口优化长度:
当窗口总和 sum ≥ target 时(满足 “总和≥target” 的条件),先计算当前窗口的长度 (right - left + 1) ,并与 len 比较,取较小值更新 len(确保 len 始终是当前找到的最小长度);
之后通过 sum -= nums[left] 移除窗口左边界的元素(收缩窗口),并将 left 指针向右移动一位,尝试找到更短的满足条件的子数组;
重复此步骤(用 while 循环),直到 sum < target 为止(此时窗口不再满足条件,停止收缩)。
4. 返回最终结果:
遍历结束后,检查 len 的值:若 len 仍为 INT_MAX ,说明遍历完所有元素后,没有找到任何总和 ≥ target 的子数组,返回 0;
若 len 已被更新(不为 INT_MAX ),则 len 即为满足条件的最小子数组长度,返回 len。

最终代码:

    int minSubArrayLen(int target, vector<int>& nums) {int n = nums.size();int sum = 0, len = INT_MAX;for(int left = 0,right = 0;right < n; right++){sum += nums[right];//进窗口while(sum >= target)//判断{len = min(len, right - left + 1);//更新结果sum -=nums[left++];//出窗口}}return len == INT_MAX? 0 : len;}

赶紧动起手来吧!!!
点击下方即可跳转
长度最小的子数组

http://www.dtcms.com/a/585654.html

相关文章:

  • tcp关闭的四次挥手
  • 基于HAL库实现CAN通信RS485通信WIFI模块和4G模块的AT指令和TCP透传
  • 采购网站有哪些东莞百度推广优化排名
  • 黄石网站设计公司网站都必须要备案吗
  • 36.华为云计算类服务实践
  • 长沙网站制作合作商网站更改文章标题
  • 【赵渝强老师】使用Helm简化Kubernetes(K8s)应用的部署和管理
  • 网页设计与制作教程期末考试东莞网络优化公司排名
  • docker打包,启动java程序
  • Debian 13 安装 Kubernetes 最新版 并使用 containerd 运行时
  • 通过操作地址,来进行STM32的写入GPIO端口值
  • 压力测试详解
  • 网站 怎么备案佛山营销型网站设计
  • 网站关键字被百度收录外链群发
  • Qt点击信号全解析:QTreeWidget交互指南
  • C++ 头文件:语言功能的 “模块化工具箱”(第三章)
  • 系统架构设计师学习大纲目录
  • 网站建设百度推广说词网站服务器在本地是指
  • Highcharts 3D图:深入解析与实际应用
  • 全景图制作工具( 10 种)
  • 虚拟位置映射(标签鸽
  • Pytorch 学习之Transforms
  • 中国建设银行网站的社保板块在哪里徐州专业网站制作公司
  • 免费建立移动网站吗模拟百度搜索词进入网站
  • Windows 如何安装 Chocolatey
  • 江苏高端网站建设一个网站怎么赚钱
  • 鸿蒙 ArkTS 入门教程:小白实战 List 列表开发(详解 @State, ForEach, @Builder)
  • Redis_8_List
  • excel VBA应用
  • 第十六章 SDN与NFV概述