From b3505f0c052df73b36a864701d30191570a6d247 Mon Sep 17 00:00:00 2001 From: Lam Haoyin Date: Sat, 19 Feb 2022 23:29:07 +0800 Subject: [PATCH] add: 220219-CN [golang] --- golang/2202/220219-CN.go | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 golang/2202/220219-CN.go diff --git a/golang/2202/220219-CN.go b/golang/2202/220219-CN.go new file mode 100644 index 0000000..f83a451 --- /dev/null +++ b/golang/2202/220219-CN.go @@ -0,0 +1,32 @@ +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})) +}