209. 长度最小的子数组
时间:2020-06-28 09:45:39
收藏:0
阅读:52
// 滑动窗口 时间复杂度O(N)
func minSubArrayLen(s int, nums []int) int {
n := len(nums)
// l,r为左右边界指针
l, r := 0, 0
// 窗口的和
sum := 0
// 返回结果
res := math.MaxInt64
for r < n {
// 将右边界加入窗口中
rNum := nums[r]
sum += rNum
r++
// 如果现在的和满足条件
for sum >= s {
// 更新结果
res = getMin(res, r-l)
sum -= nums[l]
l++
}
}
// 如果res没有更新过代表没有满足条件的结果
if res == math.MaxInt64 {
res = 0
}
return res
}
func getMin(a, b int) int {
if a < b {
return a
}
return b
}
评论(0)