题目:
给定一个含有 n ****个正整数的数组和一个正整数 target 。
找出该数组中满足其和 ****≥ target ****的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度 。 如果不存在符合条件的子数组,返回 0 。
算法:
方法一:双指针
func minSubArrayLen(target int, nums []int) int {
min := math.MaxInt32
left, right := 0, 0
sum := 0
for ; right < len(nums); right ++ {
// 一个数就大于target
// if nums[right] > target {
// return 1
// }
sum = sum + nums[right]
for sum >= target && left <= right{
if right - left + 1 < min {
min = right - left + 1
}
// left位置右移
sum = sum - nums[left]
left ++
}
}
if min == math.MaxInt32 {
return 0
}
return min
}