Leetcode 209:长度最小的子数组
程序员文章站
2022-07-14 18:15:40
...
给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的子数组。如果不存在符合条件的子数组,返回 0。
示例:
输入: [2,3,1,2,4,3], s = 7
输出: 2
解释: 子数组 [4,3] 是该条件下的长度最小的子数组。
- 1
- 2
- 3
进阶:
如果你已经完成了O(n) 时间复杂度的解法, 请尝试 O(n log n) 时间复杂度的解法。
解题思路:利用左右两个指针往后加(java代码如下)
public int minSubArrayLen2(int s, int[] nums) { int l = 0; int r = 0; int cur = 0; int res = Integer.MAX_VALUE; while (r < nums.length) { if (cur < s) { cur += nums[r++]; } else { if (r - l < res) { res = r - l; } cur -= nums[l++]; } } //r已经加到最后了,这时需要将l尽可能的往右移 while(cur >= s) { cur -= nums[l++]; if (r - l + 1 < res) { res = r - l + 1; } } return res; }
上一篇: 49. HTTP 请求/应答
推荐阅读
-
【LeeCode 中等 数组 python3】209. 长度最小的子数组
-
[leetcode](4.21)4. 有效子数组的数目
-
【LeetCode-153】153.寻找旋转排序数组中的最小值
-
程序员代码面试指南 python实现(第一章 栈和队列 :最大值减去最小值小于或等于num的子数组数量)
-
leetcode 第907题 子数组的最小值之和 python解法
-
LeetCode-907.子数组的最小值之和
-
Java实现给定一个无序的整数数组,找到其中最长上升子序列的长度。
-
LeetCode 907 - 子数组的最小值之和
-
leetcode 209 长度最小的子数组
-
LeetCode:长度最小的子数组【209】