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

力扣-长度最小的子数组

1.题目描述

2.题目链接

LCR 008. 长度最小的子数组 - 力扣(LeetCode) 

3.题目分析

这道题目我们使用的也是双指针。我们可以定义两个指针都指向数组第一个元素,然后使用right指针遍历原数组计算left指针到right指针之间的所有元素的和是否大于等于target

如果大于,就停止right的遍历,存储此时的最小数组长度length,再移动left指针直到left指针到right指针之间的所有元素的和小于target时停止left的移动,继续right指针的移动。

重复此过程,直到right指针遍历完数组,在此期间,不断地取存储的length和新的right-left+1的最小值,最后得到的就是长度最小的子数组了。

我们可以发现,这道题和我们前面做过的双指针题目并不是很相似,因为left和right指针同向移动并且不会回退,也就是说两个指针一直在向同一个方向移动。这种移动就像是一个窗口在数组中滑动,所以我们称呼这种算法为滑动窗口。 ;

滑动窗口的步骤主要分为:

其中进窗口就是right遍历数组;判断就是left和right之间的元素之和是否大于target;出窗口就是left移动。

4.代码细节

1)我们可以定义length的初始值为Integer.MAX_VALUE

   int left=0,right=0,sum=0,length=Integer.MAX_VALUE;

 这样,无论我们求得的length是多少,我们通过取最小值的方式都可以更新到length,如果我们设置length的初始值为0的话,无论我们求得的length是多少,最后取最小值得到的length都是0。

  length=Math.min(length,right-left+1);

2) return length!=Integer.MAX_VALUE?length:0;

题目要求我们在没有找到符合条件的子数组的时候返回0,所以我们可以通过三位运算符的return来进行返回。

 return length!=Integer.MAX_VALUE?length:0;

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

相关文章:

  • vscode包含工程文件路径
  • uni-app(3):互相引用
  • GEE数据下载问题记录
  • 第十节第六部分:常见API:DateTimeFormatter、Period、Duration
  • 数据仓库工具箱第三版——读书笔记(未完)
  • IO原理与高性能网络编程深度剖析
  • Java 大视界 -- 基于 Java 的大数据分布式存储在视频会议系统海量视频数据存储与回放中的应用(263)
  • 【Java】—— 常见的排序算法
  • PHP7内核剖析 学习笔记 第七章 面向对象
  • 在uni-app中修改上一个页面的值,可以通过多种方式实现,这里提供几种常见的方法:
  • CVE-2024-42323
  • FPGA:CLB资源以及Verilog编码面积优化技巧
  • Opencv---RotatedRect
  • RPA在持续集成和持续部署中的角色是什么?
  • 力扣HOT100之二叉树:124. 二叉树中的最大路径和
  • 野火鲁班猫(arrch64架构debian)从零实现用MobileFaceNet算法进行实时人脸识别(四)安装RKNN Toolkit2
  • 服务架构演变过程
  • 腾讯音乐一面
  • PyTorch性能调优实战:从算子优化到分布式训练全攻略
  • 【前端】每日一道面试题4:什么是CSS容器查询(Container Queries)?与媒体查询有何区别?
  • 【MySQL】06.MySQL表的增删查改
  • 元宇宙赛道新势力:芯谷产业园创新业务如何重构产业格局
  • docker命令
  • 前端流行框架Vue3教程:22. 组件生命周期
  • 黑马k8s(十二)
  • 跨境支付风控失效?用代理 IP 构建「地域 - 设备 - 行为」三维防护网
  • 固定资产全链路数字化:从采购到报废的智能管理方案
  • Day 0015:Metasploit 基础解析
  • Java 海康录像机通过sdk下载的视频无法在线预览问题
  • 智能赋能与人文滋养:人工智能时代高中数字化教育的范式重构