969.煎饼排序
969.煎饼排序
题解
找到最大的下标,反转,此时最大的在第一个位置,再把整个翻转,此时最大的排到最后了,再找次大的,以此类推
代码
package main func pancakeSort(arr []int) []int { var ans []int for i := len(arr); i >= 0; i-- { maxIdx := 0 for i, v := range arr[:i] { if v > arr[maxIdx] { maxIdx = i } } if maxIdx == i-1 { continue } reverse(arr, maxIdx) ans = append(ans, maxIdx+1) reverse(arr, i-1) ans = append(ans, i) } return ans } func reverse(arr []int, tail int) { for i, j := 0, tail; i < j; i, j = i+1, j-1 { arr[i], arr[j] = arr[j], arr[i] } }