Skip to content

209-长度最小的子数组

思路:双指针 (快慢指针)

ts
function minSubArrayLen(target: number, nums: number[]): number {
  const len = nums.length
  let slow = 0
  let fast = 0
  let sum = 0
  let result = len + 1

  while (fast < len) {
    sum += nums[fast++]

    while (sum >= target) {
      const subLen = fast - slow
      result = result < subLen ? result : subLen
      sum -= nums[slow++]
    }
  }

  return result > len ? 0 : result
}
function minSubArrayLen(target: number, nums: number[]): number {
  const len = nums.length
  let slow = 0
  let fast = 0
  let sum = 0
  let result = len + 1

  while (fast < len) {
    sum += nums[fast++]

    while (sum >= target) {
      const subLen = fast - slow
      result = result < subLen ? result : subLen
      sum -= nums[slow++]
    }
  }

  return result > len ? 0 : result
}