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 }