添加新题目
This commit is contained in:
@@ -1,58 +1,51 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"sort"
|
||||
)
|
||||
import "fmt"
|
||||
|
||||
func main() {
|
||||
var a []int
|
||||
a[0] = 1
|
||||
fmt.Println(a[1])
|
||||
//fmt.Println(maxSlidingWindow([]int{1, 3, -1, -3, 5, 3, 6, 7}, 3))
|
||||
fmt.Println(maxSlidingWindow([]int{7, 2, 4}, 2))
|
||||
}
|
||||
|
||||
func maxSlidingWindow(nums []int, k int) []int {
|
||||
queue := make([]int, k)
|
||||
result := make([]int, 0)
|
||||
for i := 0; i < k; i++ {
|
||||
queue[i] = nums[i]
|
||||
if k > len(nums) {
|
||||
return []int(nil)
|
||||
}
|
||||
maxnum := 0
|
||||
for i := 0; i < len(nums)-k+1; i++ {
|
||||
if i == 0 {
|
||||
queuetmp := make([]int, len(queue))
|
||||
copy(queuetmp, queue) // 深拷贝
|
||||
sort.Ints(queuetmp)
|
||||
maxnum = queuetmp[k-1]
|
||||
result = append(result, queuetmp[k-1])
|
||||
numlist := make([]int, 0, k)
|
||||
result := make([]int, 0)
|
||||
|
||||
//fmt.Println("result:", result)
|
||||
for i := 0; i < len(nums); i++ {
|
||||
if len(numlist) == 0 {
|
||||
numlist = append(numlist, i)
|
||||
if i >= k-1 {
|
||||
result = append(result, nums[numlist[0]])
|
||||
}
|
||||
continue
|
||||
}
|
||||
fmt.Println("queue分割前:", queue)
|
||||
queueA := queue[1:]
|
||||
//fmt.Println("queueA", queueA)
|
||||
queueA = append(queueA, nums[i+k-1])
|
||||
queue = queueA
|
||||
fmt.Println("max", maxnum)
|
||||
fmt.Println("当前右边界:", nums[i+k-1])
|
||||
if nums[i+k-1] >= maxnum {
|
||||
maxnum = nums[i+k-1]
|
||||
result = append(result, nums[i+k-1])
|
||||
} else {
|
||||
queuetmp := make([]int, len(queue))
|
||||
copy(queuetmp, queue) // 深拷贝
|
||||
sort.Ints(queuetmp)
|
||||
result = append(result, queuetmp[k-1])
|
||||
if numlist[0] <= i-k {
|
||||
numlist = numlist[1:]
|
||||
}
|
||||
p := len(numlist) - 1
|
||||
//fmt.Println(numlist)
|
||||
for {
|
||||
if len(numlist) == 0 || p < 0 {
|
||||
break
|
||||
}
|
||||
if nums[numlist[p]] < nums[i] {
|
||||
p--
|
||||
} else {
|
||||
break
|
||||
}
|
||||
}
|
||||
numlist = numlist[:p+1]
|
||||
if len(numlist) < k {
|
||||
numlist = append(numlist, i)
|
||||
} else {
|
||||
numlist = append(numlist[1:], i)
|
||||
}
|
||||
if i >= k-1 {
|
||||
result = append(result, nums[numlist[0]])
|
||||
}
|
||||
//
|
||||
|
||||
//fmt.Println("queueA2", queueA)
|
||||
//fmt.Println("queueA", queue)
|
||||
|
||||
fmt.Println("result:", result)
|
||||
}
|
||||
//fmt.Println("result", result)
|
||||
return result
|
||||
}
|
||||
|
||||
@@ -144,6 +137,50 @@ func maxSlidingWindow(nums []int, k int) []int {
|
||||
// return result
|
||||
//}
|
||||
|
||||
//func maxSlidingWindow(nums []int, k int) []int {
|
||||
// queue := make([]int, k)
|
||||
// result := make([]int, 0)
|
||||
// for i := 0; i < k; i++ {
|
||||
// queue[i] = nums[i]
|
||||
// }
|
||||
// maxnum := 0
|
||||
// for i := 0; i < len(nums)-k+1; i++ {
|
||||
// if i == 0 {
|
||||
// queuetmp := make([]int, len(queue))
|
||||
// copy(queuetmp, queue) // 深拷贝
|
||||
// sort.Ints(queuetmp)
|
||||
// maxnum = queuetmp[k-1]
|
||||
// result = append(result, queuetmp[k-1])
|
||||
//
|
||||
// //fmt.Println("result:", result)
|
||||
// continue
|
||||
// }
|
||||
// fmt.Println("queue分割前:", queue)
|
||||
// queueA := queue[1:]
|
||||
// //fmt.Println("queueA", queueA)
|
||||
// queueA = append(queueA, nums[i+k-1])
|
||||
// queue = queueA
|
||||
// fmt.Println("max", maxnum)
|
||||
// fmt.Println("当前右边界:", nums[i+k-1])
|
||||
// if nums[i+k-1] >= maxnum {
|
||||
// maxnum = nums[i+k-1]
|
||||
// result = append(result, nums[i+k-1])
|
||||
// } else {
|
||||
// queuetmp := make([]int, len(queue))
|
||||
// copy(queuetmp, queue) // 深拷贝
|
||||
// sort.Ints(queuetmp)
|
||||
// result = append(result, queuetmp[k-1])
|
||||
// }
|
||||
// //
|
||||
//
|
||||
// //fmt.Println("queueA2", queueA)
|
||||
// //fmt.Println("queueA", queue)
|
||||
//
|
||||
// fmt.Println("result:", result)
|
||||
// }
|
||||
// return result
|
||||
//}
|
||||
|
||||
//func maxSlidingWindow(nums []int, k int) []int {
|
||||
// result := make([]int, 0)
|
||||
// nowmax := 0
|
||||
|
||||
Reference in New Issue
Block a user