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

60 lines
832 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)
for i, n := range nums {
if i < lenNums {
qEndPtr++
qIterator[qEndPtr] = 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] + nums[i]
if q2Iterator[q2EndPtr] >= k {
return wndSz
}
}
t = qIterator
qIterator = q2Iterator
q2Iterator = t
qBeginPtr = q2BeginPtr
qEndPtr = q2EndPtr
q2BeginPtr = -1
q2EndPtr = -1
}
return -1
}