Files
leetcode/862-shortest-subarray-with-sum-at-least-k.go

38 lines
577 B
Go

package main
func ShortestSubarray(nums []int, k int) int {
if len(nums) == 0 {
return -1
}
wndSz := 1
wndStart := 0
wndEnd := 0
wndSum := 0
wndPrevInitialSum := 0
lenNums := len(nums)
for wndSz = 1; wndSz <= lenNums; wndSz++ {
wndSum = wndPrevInitialSum + nums[wndSz-1]
wndPrevInitialSum = wndSum
if wndSum >= k {
return wndSz
}
for wndStart = 1; (wndStart + wndSz - 1) < lenNums; wndStart++ {
wndEnd = wndStart + wndSz - 1
wndSum = wndSum - nums[wndStart-1] + nums[wndEnd]
if wndSum >= k {
return wndSz
}
}
}
return -1
}