33 lines
458 B
Go
33 lines
458 B
Go
package main
|
|
|
|
func ShortestSubarray(nums []int, k int) int {
|
|
if len(nums) == 0 {
|
|
return -1
|
|
}
|
|
|
|
sz := 999999
|
|
prefix := make([]int, len(nums)+1)
|
|
|
|
for i := 1; i <= len(nums); i++ {
|
|
prefix[i] = prefix[i-1] + nums[i-1]
|
|
}
|
|
|
|
for i := 0; i < len(nums); i++ {
|
|
for j := i; j < len(nums); j++ {
|
|
sum := prefix[j+1] - prefix[i]
|
|
if sum >= k {
|
|
l := j - i + 1
|
|
if sz > l {
|
|
sz = l
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if sz == 999999 {
|
|
sz = -1
|
|
}
|
|
|
|
return sz
|
|
}
|