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

45 lines
596 B
Go

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
}