Minimum Size Subarray Sum
LeetCode 209 · View on LeetCode
Find the shortest contiguous subarray with sum ≥ target. Expand right to build sum, shrink left while still valid, track the minimum length.
package main
import "fmt"
func minSubArrayLen(target int, nums []int) int {
left, sum := 0, 0
best := len(nums) + 1
for right := 0; right < len(nums); right++ {
sum += nums[right]
for sum >= target {
if right-left+1 < best {
best = right - left + 1
}
sum -= nums[left]
left++
}
}
if best > len(nums) {
return 0
}
return best
}
func main() {
fmt.Println(minSubArrayLen(7, []int{2, 3, 1, 2, 4, 3})) // 2
fmt.Println(minSubArrayLen(4, []int{1, 4, 4})) // 1
fmt.Println(minSubArrayLen(11, []int{1, 1, 1, 1, 1})) // 0
}