LeetCode 209. 长度最小的子数组
题目描述
思路分析
标准滑动窗口问题
参考代码
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)
1
write your code here
CC BY-NC-SA 4.0
许可协议,转载请注明出处!
本博客所有文章除特别声明外,均采用