1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
// @Title: 长度最小的子数组 (Minimum Size Subarray Sum)
// @Author: 15816537946@163.com
// @Date: 2022-03-18 09:38:32
// @Runtime: 8 ms
// @Memory: 3.6 MB
func minSubArrayLen(target int, nums []int) int {
	lo, hi := 0, 0
	ret := math.MaxInt32
	sum := 0

	for hi < len(nums) {
		sum += nums[hi]
		for sum >= target {
			ret = min(ret, hi-lo+1)
			sum -= nums[lo]
			lo++
		}
		hi++
	}
	if ret == math.MaxInt32 {
		return 0
	}

	return ret
}

func min(a,b int) int {
    if a > b {
        return b
    }
    return a
}