力扣209. 长度最小的子数组

给定一个含有 n 个正整数的数组和一个正整数 target 。

找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。

1、数组下标从 (l,r) = (-1,0)开始,即:为[]
2、sum为数组中所有数据之和
3、子数组的最大长度为nums.length

var minSubArrayLen = function ( target,  nums ) {
  let l = 0
  let r = -1
  let sum = 0
  let res = nums.length + 1 //比最大值nums.length还要大--为了判断不满足的情况
  while( l < nums.length ) {
     if( sum < target && r + 1 < nums.length  ){
       r++
       sum += nums[r]
     } else {
       sum -= nums[l]
       l++
     }
     if( sum >= target) {
        res =Math.min(res, r-l+1)
     }
  }
  if( res === nums.length + 1 ) return 0
  return res
}

你可能感兴趣的:(力扣209. 长度最小的子数组)