"Shortest Subarray with Sum at Least K" hard task No 862 sliding window with prefix sums
This commit is contained in:
@@ -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
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user