"Shortest Subarray with Sum at Least K" hard task No 862 another shot at queues solution
This commit is contained in:
@@ -5,32 +5,56 @@ func ShortestSubarray(nums []int, k int) int {
|
|||||||
return -1
|
return -1
|
||||||
}
|
}
|
||||||
|
|
||||||
wndSz := 1
|
queue := [100000]int{}
|
||||||
wndStart := 0
|
queue2 := [100000]int{}
|
||||||
|
|
||||||
wndEnd := 0
|
qIterator := &queue
|
||||||
wndSum := 0
|
q2Iterator := &queue2
|
||||||
|
|
||||||
|
t := qIterator
|
||||||
|
|
||||||
|
qEndPtr := -1
|
||||||
|
qBeginPtr := -1
|
||||||
|
|
||||||
|
q2EndPtr := -1
|
||||||
|
q2BeginPtr := -1
|
||||||
|
|
||||||
wndPrevInitialSum := 0
|
|
||||||
lenNums := len(nums)
|
lenNums := len(nums)
|
||||||
|
nums2 := [100000]int{}
|
||||||
|
|
||||||
for wndSz = 1; wndSz <= lenNums; wndSz++ {
|
for i, n := range nums {
|
||||||
|
qEndPtr++
|
||||||
|
qIterator[qEndPtr] = n
|
||||||
|
|
||||||
wndSum = wndPrevInitialSum + nums[wndSz-1]
|
nums2[i] = n
|
||||||
wndPrevInitialSum = wndSum
|
|
||||||
if wndSum >= k {
|
if n >= k {
|
||||||
return wndSz
|
return 1
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for wndStart = 1; (wndStart + wndSz - 1) < lenNums; wndStart++ {
|
wndSz := 0
|
||||||
|
i := 0
|
||||||
|
|
||||||
wndEnd = wndStart + wndSz - 1
|
for wndSz = 2; wndSz <= lenNums; wndSz++ {
|
||||||
wndSum = wndSum - nums[wndStart-1] + nums[wndEnd]
|
for i = wndSz - 1; i < lenNums; i++ {
|
||||||
|
qBeginPtr++
|
||||||
if wndSum >= k {
|
q2EndPtr++
|
||||||
|
q2Iterator[q2EndPtr] = qIterator[qBeginPtr] + nums2[i]
|
||||||
|
if q2Iterator[q2EndPtr] >= k {
|
||||||
return wndSz
|
return wndSz
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
t = qIterator
|
||||||
|
qIterator = q2Iterator
|
||||||
|
q2Iterator = t
|
||||||
|
|
||||||
|
qBeginPtr = q2BeginPtr
|
||||||
|
qEndPtr = q2EndPtr
|
||||||
|
|
||||||
|
q2BeginPtr = -1
|
||||||
|
q2EndPtr = -1
|
||||||
}
|
}
|
||||||
|
|
||||||
return -1
|
return -1
|
||||||
|
|||||||
Reference in New Issue
Block a user