原题链接:209.长度最小的子数组
根据题意可知,是求最小子数组,那么就可以思考是否可以应用到滑动窗口这个技巧
在滑动窗口内的值大于或等于target时,就可以进行判断了,此时从左侧开始缩小滑动窗口,直到小于target,就可以得出最小的滑动窗口(子数组)的长度了
func minSubArrayLen(target int, nums []int) int {
left,right,sum:=0,0,0
min_length := len(nums) +1//最小滑动窗口
for right < len(nums){//遍历数组
sum+=nums[right]
for sum >= target{//滑动窗口值相等,则代表要进行判断是否为最小子数组,不断的减去左侧窗口的值,直到sum不大于target为止
if right-left +1 < min_length{//滑动窗口长度小于当前最小子数组
min_length = right-left +1//更新
}
//如果滑动窗口大小依旧大于等于最小子数组
sum -= nums[left]//左侧继续缩小滑动窗口的值
left++//左侧继续缩小滑动窗口的值
}
right++//右侧开始扩大滑动窗口的值
}
if min_length == len(nums) +1{//没有满足的子数组
return 0
}else{//返回满足的子数组
return min_length
}
}