LeetCode 209. 长度最小的子数组

题目描述

209. 长度最小的子数组

image-20250418160436467

思路分析

标准滑动窗口问题

image-20250509215005412

参考代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
func minSubArrayLen(target int, nums []int) int {
	left, right := 0, 0
	sum := 0
	res := len(nums) + 1

	for right < len(nums) {
		sum += nums[right]
		for sum >= target {
			res = min(res, right-left+1)
			sum -= nums[left]
			left++
		}
		right++
	}

	if res == len(nums)+1 {
		return 0
	}
	return res
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
func minSubArrayLen(target int, nums []int) int {
	n := len(nums)
	res := n + 1
	sum := 0
	start := 0

	for end := 0; end < n; end++ {
		sum += nums[end]
		for sum >= target {
			res = min(res, end-start+1)
			sum -= nums[start]
			start++
		}
	}

	if res == n+1 {
		return 0
	}
	return res
}
  • 时间复杂度:O(n)
  • 空间复杂度:O(1)

➡️ 点击查看 Java 题解

1
write your code here
本文作者:
本文链接: https://hgnulb.github.io/blog/2025/55813347
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处!