力扣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
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容