我們有一個(gè)鍋鏟和一堆煎餅镊叁,我們的目標(biāo)是將煎餅按照大小排序渴邦,大的在下面。我們唯一的辦法是讓鍋鏟從一個(gè)地方伸進(jìn)去澎剥,并且把上面所有的煎餅翻下來(lái)锡溯。
Go實(shí)現(xiàn):
package main
import (
"fmt"
)
func main() {
var stact = []int{1, 4, 5, 2, 3, 8, 6, 7, 9, 0}
cakeNum := len(stact)
for i := 0; i < cakeNum; i++ {
biggest := biggestPancake(stact, cakeNum-i)
updata := flip(stact, biggest)
stact = flip(updata, cakeNum-i-1)
}
fmt.Print(stact)
}
func flip(arr []int, i int) []int {
up := arr[:i+1]
down := arr[i+1:]
var newArr []int
for i := len(up) - 1; i >= 0; i-- {
newArr = append(newArr, up[i])
}
for n := 0; n < len(down); n++ {
newArr = append(newArr, down[n])
}
return newArr
}
//獲取前count位最大的值
func biggestPancake(arr []int, count int) int {
var max = 0
var maxIndex = 0
for j := 0; j < count; j++ {
if arr[j] > max {
max = arr[j]
maxIndex = j
}
}
return maxIndex
}