Leetcode 209: 长度最小的子数组
程序员文章站
2022-07-14 18:16:22
...
题目描述:
给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组。如果不存在符合条件的连续子数组,返回 0。
示例:
输入: s = 7, nums = [2,3,1,2,4,3]
输出: 2
解释: 子数组 [4,3] 是该条件下的长度最小的连续子数组。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/minimum-size-subarray-sum
思路:双指针法
var minSubArrayLen = function(s, nums) {
let p1 = 0, p2 = -1;
let len = nums.length;
let res = len + 1;
let sum = 0;
while(p1 < len - 1) {
if(p2 < len - 1 && sum < s) { // 右指针向右滑动
p2++;
sum += nums[p2];
} else {
sum = sum - nums[p1];
p1++;
}
if(sum >= s) {
res = res > p2-p1+1 ? p2-p1+1 : res;
}
}
return res === len + 1 ? 0 : res;
};
推荐阅读
-
【LeeCode 中等 数组 python3】209. 长度最小的子数组
-
[leetcode](4.21)4. 有效子数组的数目
-
【LeetCode-153】153.寻找旋转排序数组中的最小值
-
程序员代码面试指南 python实现(第一章 栈和队列 :最大值减去最小值小于或等于num的子数组数量)
-
leetcode 第907题 子数组的最小值之和 python解法
-
LeetCode-907.子数组的最小值之和
-
Java实现给定一个无序的整数数组,找到其中最长上升子序列的长度。
-
LeetCode 907 - 子数组的最小值之和
-
leetcode 209 长度最小的子数组
-
LeetCode:长度最小的子数组【209】