62 lines
849 B
Go
62 lines
849 B
Go
package main
|
|
|
|
func ShortestSubarray(nums []int, k int) int {
|
|
if len(nums) == 0 {
|
|
return -1
|
|
}
|
|
|
|
queue := [100000]int{}
|
|
queue2 := [100000]int{}
|
|
|
|
qIterator := &queue
|
|
q2Iterator := &queue2
|
|
|
|
t := qIterator
|
|
|
|
qEndPtr := -1
|
|
qBeginPtr := -1
|
|
|
|
q2EndPtr := -1
|
|
q2BeginPtr := -1
|
|
|
|
lenNums := len(nums)
|
|
nums2 := [100000]int{}
|
|
|
|
for i, n := range nums {
|
|
qEndPtr++
|
|
qIterator[qEndPtr] = n
|
|
|
|
nums2[i] = n
|
|
|
|
if n >= k {
|
|
return 1
|
|
}
|
|
}
|
|
|
|
wndSz := 0
|
|
i := 0
|
|
|
|
for wndSz = 2; wndSz <= lenNums; wndSz++ {
|
|
for i = wndSz - 1; i < lenNums; i++ {
|
|
qBeginPtr++
|
|
q2EndPtr++
|
|
q2Iterator[q2EndPtr] = qIterator[qBeginPtr] + nums2[i]
|
|
if q2Iterator[q2EndPtr] >= k {
|
|
return wndSz
|
|
}
|
|
}
|
|
|
|
t = qIterator
|
|
qIterator = q2Iterator
|
|
q2Iterator = t
|
|
|
|
qBeginPtr = q2BeginPtr
|
|
qEndPtr = q2EndPtr
|
|
|
|
q2BeginPtr = -1
|
|
q2EndPtr = -1
|
|
}
|
|
|
|
return -1
|
|
}
|