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

每日算法题 10

题目

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

思路

又是我们的老朋友,通过双指针来指定窗口大小:初始左右指针都指向第一个元素,把右指针的所指向元素加入窗口并向右移一位,扩大右边界,如果当前窗口的和>=s,尝试收缩左边界(左指针向右移一位),找更小的窗口,就这样不断循环(>=s收缩左边界,<s扩大右边界)同时记录最小窗口长度

代码

class Solution { public int minSubArrayLen(int target, int[] nums) { int low=0; int high=0; int sum=0; int min=Integer.MAX_VALUE; while(high<nums.length){ sum+=nums[high]; high++; while(sum>=target){ min=Math.min(min,high-low); sum-=nums[low]; low++; } } return min==Integer.MAX_VALUE?0:min; } }

小舟有话说

在这里提到了滑动窗口,该算法本质上是双指针的一种具体应用场景,用来解决子数组/子串/子序列等问题

具体用法:用两个指针划定一个窗口,通过移动右指针扩大窗口,移动左指针收缩窗口,在窗口内维护满足条件的子数组

如果能帮助到你,点点关注,下次不迷路~

http://www.cnnetsun.cn/news/1361258.html

相关文章:

  • Bebas Neue:开源无衬线字体的商业价值挖掘与全场景应用方法论
  • 如何用picacomic-downloader打造个人漫画图书馆?3步轻松搞定离线阅读
  • OP-CEPH02-在OpenEuler 22.03 LTS-SP4上构建高可用CEPH集群实战
  • 技术拆解:AI低代码架构设计与全链路落地实现
  • 科晶生物双擎AI驱动,解锁“蛋白/核酸”大分子定向设计新范式
  • 深度剖析SWAP模型,从SWAP模型源代码编译到AI大语言模型辅助建模
  • COMSOL专业模型在激光熔覆与选区熔融仿真中的应用
  • python学习笔记——列表的内置方法
  • 怎么给 Windows 电脑的 C 盘扩容?教你 6 招,一劳永逸释放空间
  • MySQL中between and的基本用法、范围查询
  • ArrayList之模仿电影系统综合案例
  • @SpringBootApplication 与 SPI 机制的终极解密
  • 和BS架构宠物健康咨询系统信息管理系统源码-SpringBoot后端+Vue前端+MySQL【可直接运行】
  • 决胜2026:10大智能拓客系统硬核横评,帮老板精准选对获客工具
  • JavaEE零基础入门指南
  • 嵌入式AI开发必看:杜绝幻觉,才是工业级IDE的核心底气
  • MCP服务开发与AI集成
  • 开源TOP20项目(2026.03.09-2026.03.15)
  • 微软 Planetary Computer:地理空间数据服务的创新与应用潜力
  • 可调谐石墨烯超材料吸收体的FDTD仿真源文件
  • 如何学习计算机(民办普通大学生心得)
  • PHPStudy2018环境部署全攻略
  • 中控SCADA-MQTT驱动采集与MQTT转发应用详解
  • mathtype中omml2mml缺失问题解决
  • 动力域-混动系统/动力域半实物仿真测试
  • 从 AI 终端爆发看人机交互演进:薄膜开关为何仍是工业控制的核心方案?
  • 小白入门:无刷直流电机BLDC,我从无人机开始学的那些事儿
  • 解决 ScrollView嵌套RecyclerView设置nestedScrollingEnabled=false数据显示不全问题
  • GNS3 入门指南
  • 并联机器人设计快速上手篇:利用iRobotCAM完成机器人夹爪的设计,无缝对接MuJoCo