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

LeetCode(209)长度最小的子数组⭐⭐

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

示例:

  • 输入:s = 7, nums = [2,3,1,2,4,3]
  • 输出:2
  • 解释:子数组 [4,3] 是该条件下的长度最小的子数组。

示例 2:

输入:target = 4, nums = [1,4,4]
输出:1

提示:

  • 1 <= target <= 10^9
  • 1 <= nums.length <= 10^5
  • 1 <= nums[i] <= 10^5

思路1:暴力解法复杂度大

class Solution {public int minSubArrayLen(int target, int[] nums) {int result = 0xFFFF; // 最终的结果int sum = 0; // 子序列的数值之和int subLength = 0; // 子序列的长度for (int i = 0; i < nums.length; i++) { // 设置子序列起点为isum = 0;for (int j = i; j < nums.length; j++) { // 设置子序列终止位置为jsum += nums[j];if (sum >= target) { // 一旦发现子序列和超过了s,更新resultsubLength = j - i + 1; // 取子序列的长度result = result < subLength ? result : subLength;break; // 因为我们是找符合条件最短的子序列,所以一旦符合条件就break}}}// 如果result没有被赋值的话,就返回0,说明没有符合条件的子序列return result == 0xFFFF ? 0 : result;}
}

思路2:看到关键词连续 想到滑动窗口 窗口大小由left和right指针决定

class Solution {public int minSubArrayLen(int target, int[] nums) {int left = 0;int sum = 0;int result = Integer.MAX_VALUE;for (int right = 0; right < nums.length; right++) {sum += nums[right]; // 扩大窗口while (sum >= target) {result = Math.min(result, right - left + 1);sum -= nums[left++]; // 去掉滑动窗口第一个值 缩小窗口}}return result == Integer.MAX_VALUE ? 0 : result;}
}

http://www.lryc.cn/news/276529.html

相关文章:

  • 【JAVA】MySQL中datetime类型23:59:59自动变为下一天的00:00:00
  • Unity游戏内相机(主角头部视角)的旋转问题:“万向节锁定”(Gimbal Lock)
  • Keras实现seq2seq
  • 1080p 1k 2k 4k 8k 分辨率,2K就不应该存在。
  • 接口芯片选型分析 四通道差分驱动可满足ANSI TIA/EIA-422-B 和ITU V.11 的要求 低功耗,高速率,高ESD
  • 使用.Net nanoFramework获取ESP32板载按键的点击事件
  • 安全远控如何设置?揭秘ToDesk、TeamViewer 、向日葵安全远程防御大招
  • Spring AOP(详解)
  • Linux系统编程之进程
  • Vue中使用require.context自动引入组件的方法介绍
  • Java 监控诊断利器 Arthas monitor/watch/trace 命令使用详解
  • 论文阅读:基于MCMC的能量模型最大似然学习剖析
  • 【Verilog】期末复习——设计一个带异步复位端且高电平有效的32分频电路
  • 基于springboot的java读取文档内容(超简单)
  • K8S亲和性,反亲和性,及污点
  • 2024年,AI、Web3、区块链、元宇宙:有没有“相互成就“的可能性?
  • Mac电脑好用的修图软件:Affinity Photo 2中文 for Mac
  • 数据结构之Radix和Trie
  • ctrl+c与kill -2的区别
  • 每日算法打卡:分巧克力 day 9
  • Golang switch 语句
  • 可碧教你C++——位图
  • 2024年虚拟DOM技术将何去何从?
  • 基于51单片机的恒温淋浴器控制电路设计
  • 【redis】redis的bind配置
  • C++ 继承
  • 了解ASP.NET Core 中的文件提供程序
  • 竞赛保研 基于深度学习的人脸性别年龄识别 - 图像识别 opencv
  • JavaScript音视频,JavaScript简单获取电脑摄像头画面并播放
  • 《JVM由浅入深学习【五】 2024-01-08》JVM由简入深学习提升分享