From 9519492a8b9b9971a301be53dd006af09ba0689c Mon Sep 17 00:00:00 2001 From: "shuhaofeng2@creditease.cn" Date: Thu, 12 Nov 2020 00:45:38 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E3=80=90969.=20=E7=85=8E=E9=A5=BC?= =?UTF-8?q?=E6=8E=92=E5=BA=8F=E3=80=91=E3=80=90C++=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...47\351\245\274\346\216\222\345\272\217.md" | 45 ++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\347\203\247\351\245\274\346\216\222\345\272\217.md" "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\347\203\247\351\245\274\346\216\222\345\272\217.md" index 513cbdc..5b9bf5d 100644 --- "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\347\203\247\351\245\274\346\216\222\345\272\217.md" +++ "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\347\203\247\351\245\274\346\216\222\345\272\217.md" @@ -149,4 +149,47 @@ void reverse(int[] arr, int i, int j) {

-======其他语言代码====== \ No newline at end of file +======其他语言代码====== + +[fengshuu](https://github.com/fengshuu) 提供 C++ 解法代码: +```cpp +class Solution { +public: + vector pancakeSort(vector& arr) { + sort(arr, arr.size()); + return res; + } + +private: + // 记录反转操作序列 + vector res; + void sort(vector& cakes, int n){ + // base case + if(n == 1) return; + + // 寻找最大饼的索引 + int maxCakeIndex = max_element(cakes.begin(), cakes.begin() + n) - cakes.begin(); + + // 下面进行把最大的饼放到最后的两次翻转 + // 如果最后一个饼就是最大的, 就不需要翻转, 直接进行下次递归 + if (maxCakeIndex == n-1){ + sort(cakes, n - 1); + return; + } + + // 第一次翻转, 将最大饼翻到最上面 + // 如果第一个饼本来就是最大的, 就不需要第一次翻转. + if (maxCakeIndex != 0) { + reverse(cakes.begin(), cakes.begin() + maxCakeIndex + 1); + res.push_back(maxCakeIndex + 1); + } + + // 第二次翻转,将最大饼翻到最下面 + reverse(cakes.begin(), cakes.begin() + n); + res.push_back(n); + + // 递归调用 + sort(cakes, n - 1); + } +}; +``` \ No newline at end of file -- GitLab