leetcode-daily/golang/2202/220219-CN.go

33 lines
521 B
Go

package main
import "fmt"
// Interval [L, R]
func reverse(arr *[]int, L, R int) {
for L < R {
(*arr)[L], (*arr)[R] = (*arr)[R], (*arr)[L]
L++
R--
}
}
func pancakeSort(arr []int) (ret []int) {
n := len(arr)
for i := n; i > 0; i-- {
maxVal, maxPos := -1, -1
for j := 0; j < i; j++ {
if arr[j] > maxVal {
maxVal, maxPos = arr[j], j
}
}
ret = append(ret, maxPos+1, i)
reverse(&arr, 0, maxPos)
reverse(&arr, 0, i-1)
}
return
}
func main() {
fmt.Println(pancakeSort([]int{3, 2, 4, 1}))
}