题目链接:力扣地址
给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的 连续 子数组,并返回其长度。如果不存在符合条件的子数组,返回 0。
示例:
输入:s = 7, nums = [2,3,1,2,4,3] 输出:2 解释:子数组 [4,3] 是该条件下的长度最小的子数组。
滑动窗口解法:
func findSubArrayLen(arr []int, target int) int {
i := 0
l := len(arr)
sum := 0 //子数组之和
ret := l + 1 //考虑没有符合子数组
for j:= 0; j < l; j++ {
sum = sum + arr[j]
for sum >= target {
subLen := j-i+1
if subLen < ret {
ret = subLen
}
}
sum = sum- arr[i]
i++
}
if ret == l+1 {
return 0
}else {
return ret
}
}