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 //}