指针法:
假设 [i,j] 区间内的连续子数组的和正好等于 s,那么该子数组的长度为 j-i+1;但是数组中可能有许多个连续子数组的和正好等于 s,因此我们需要继续向后搜索,并用 minLen 标记最小长度。
在后面附上演示。
/**
* @param {number} s
* @param {number[]} nums
* @return {number}
*/
var minSubArrayLen = function(s, nums) {
if (nums.length == 0) return 0;
let head = 0;
let tail = 0;
let minLen = Infinity;
let sum = 0;
while (tail < nums.length) {
sum += nums[tail];
while (sum >= s) {
minLen = Math.min(minLen, tail - head + 1);
sum -= nums[head];
head++;
}
tail++;
}
return minLen == Infinity ? 0 : minLen;
};
感谢观看 期待关注
关注我,带你一起写bug
warning :未经授权,不得转载
有问题的小伙伴请在下方留言,喜欢就点个赞吧