package main func ShortestSubarray(nums []int, k int) int { if len(nums) == 0 { return -1 } sz := 999999 sum := nums[0] carry := 1 for i := 0; i < len(nums)-1; i++ { if sum >= k { if (carry > 0) && (sz > carry) { sz = carry } } sum = nums[i] for j := i + 1; j < len(nums); j++ { if sum >= k { if sz > (j - i) { sz = j - i } break } else { sum += nums[j] carry = j - i + 1 } } } if sz == 999999 { if sum >= k { return carry } return -1 } if (sum >= k) && (carry > 0) && (carry < sz) { return carry } return sz }