//滑动窗口
func minSubArrayLen(s int, nums []int) int {
n := len(nums)
if n == 0 {
return 0
}
//设置ans为不可能的答案
//目的是为了判断“不存在符合条件的子数组,返回0”的情况
ans := math.MaxInt32
start, end := 0, 0
sum := 0 // 子数组之和
//若剩余数组元素之和都不符合答案条件则结束循环
for end < n {
sum += nums[end]
for sum >= s {
ans = min(ans, end - start + 1)
sum -= nums[start]
start++ //左窗口滑动
}
end++ //右窗口滑动
}
if ans == math.MaxInt32 {
return 0
}
return ans
}
func min(x, y int) int {
if x < y {
return x
}
return y
}
209.长度最小的子数组
最新推荐文章于 2024-10-17 19:06:39 发布