"Shortest Subarray with Sum at Least K" hard task No 862 sliding window with prefix sums

This commit is contained in:
2022-02-26 21:02:37 +02:00
parent 50959147f2
commit 2c09d22765

View File

@@ -5,57 +5,28 @@ func ShortestSubarray(nums []int, k int) int {
return -1 return -1
} }
queue := [100000]int{} sz := 999999
queue2 := [100000]int{} prefix := make([]int, len(nums)+1)
qIterator := &queue for i := 1; i <= len(nums); i++ {
q2Iterator := &queue2 prefix[i] = prefix[i-1] + nums[i-1]
}
t := qIterator for i := 0; i < len(nums); i++ {
for j := i; j < len(nums); j++ {
qEndPtr := -1 sum := prefix[j+1] - prefix[i]
qBeginPtr := -1 if sum >= k {
l := j - i + 1
q2EndPtr := -1 if sz > l {
q2BeginPtr := -1 sz = l
}
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 if sz == 999999 {
i := 0 sz = -1
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 return sz
qIterator = q2Iterator
q2Iterator = t
qBeginPtr = q2BeginPtr
qEndPtr = q2EndPtr
q2BeginPtr = -1
q2EndPtr = -1
}
return -1
} }