题目链接
题目描述
题解
题解一(Go)
滑动窗口
func minSubArrayLen(target int, nums []int) int {
left, right, minLen, sum := 0, 0, len(nums)+1, 0
for right < len(nums) {
sum += nums[right]
// 如果总和大于target,求一下最小长度
for sum >= target {
// 计算当前子数组长度
subMinLen := right - left + 1
// 如果当前子数组长度比历史最小长度还小,就替换
if subMinLen < minLen {
minLen = subMinLen
}
// 窗口左边移动一位,查看是否符合条件
sum -= nums[left]
left++
}
right++
}
if minLen == len(nums)+1 {
return 0
}
return minLen
}