Skip to content
On this page

209. 长度最小的子数组

原题链接:LeetCode 209. 长度最小的子数组

题目描述

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

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

示例 1:

[4,3]

示例 2:

**输入:**target = 4, nums = [1,4,4] **输出:**1

示例 3:

**输入:**target = 11, nums = [1,1,1,1,1,1,1,1] **输出:**0

提示:

1 <= target <= 109
1 <= nums.length <= 105
1 <= nums[i] <= 104

进阶:

- 如果你已经实现* *`O(n)` 时间复杂度的解法, 请尝试设计一个 `O(n log(n))` 时间复杂度的解法。

难度: Medium


题解代码

javascript
/**
 * @param {number} target
 * @param {number[]} nums
 * @return {number}
 */
 var minSubArrayLen = function(target, nums) {
  let left = 0, right = 0, res = Infinity, sum = 0
  while (right < nums.length) {
    sum += nums[right]
    right++
    while(sum >= target) {
      const dis = right - left
      res = Math.min(res, dis)
      sum -= nums[left]
      left++
    }
  }
  return res === Infinity ? 0 : res
};

技术文档集合