添加新题目
This commit is contained in:
166
子串/滑动窗口最大值/main.go
Normal file
166
子串/滑动窗口最大值/main.go
Normal file
@@ -0,0 +1,166 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"sort"
|
||||
)
|
||||
|
||||
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))
|
||||
}
|
||||
|
||||
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 {
|
||||
// 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 {
|
||||
// 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
|
||||
// for i := 0; i < len(nums)-k+1; i++ {
|
||||
// if i == 0 {
|
||||
// tmp := nums[:k]
|
||||
// sort.Ints(tmp)
|
||||
// result = append(result, tmp[k-1])
|
||||
// nowmax = tmp[k-1]
|
||||
// continue
|
||||
// }
|
||||
// if nums[i+k-1] > nowmax {
|
||||
// result = append(result, nums[i+k-1])
|
||||
// } else {
|
||||
// result = append(result, nowmax)
|
||||
// }
|
||||
//
|
||||
// }
|
||||
// return result
|
||||
//}
|
||||
Reference in New Issue
Block a user