var minSubArrayLen = function(target, nums) { /** * 从头开始找出大于等于目标值的子数组,并计算长度,之后再开始从头减去,子数组向右滑动 */ let start = 0;//子数组的初始索引 let end = 0;//子数组的末尾索引,也需要从0开始遍历,等与目标值时更新一次末尾值 let sum = 0;//用于计算子数组内和 let arrLength = 0;//用于计算子数组的长度 let res = nums.length//返回值 let sign = 0//用于判断数组是否有大于等于目标值的标志位 0时nums中无和等于目标值,1时有 for(end;end<nums.length;end++){ sum += nums[end]; while(sum >= target){ //更新标志位 sign = 1; //计算此时的子数组长度 arrLength = end - start + 1; res = Math.min(arrLength,res); //子数组向右滑动 sum -= nums[start]; start++; } } return sign == 1? res:0; };