双指针解析,通过start end两个指针首先指向开头,结束条件为end指向数组尾,每次外循环将end元素累加,当和超过s则进行递减,期间进行结果的更新(对比结果和当前的end-start+1)
var minSubArrayLen = function(s, nums) {
let length = nums.length
if(length===0) {
return 0
}
let start = end = 0
let result = Infinity
let sum = 0
while(end <length){
sum+=nums[end]
while(sum >= s) {
result = Math.min(result, end - start+1)
sum-=nums[start]
start++
}
end++
}
return result == Infinity ? 0 : result;
};
网友评论