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 }