思路:一个一个放到最终位置
也就是,先把最大的放到最终位置,然后把次大的放到最终位置,持续n次即把所有的放好
放某一个值的方法:先找到该值的下标i,如果就在最终位置则不动,否则把[0…i]翻转,然后把[0…n-1]翻转。
class Solution {
public:
vector<int> pancakeSort(vector<int>& arr) {
vector<int> ans;
int n = arr.size();
for (int i = n; i > 0; --i) {
int index = 0;
for (int j = 0; j < i; ++j) {
if (arr[j] == i) {
index = j;
break;
}
}
if (index == i - 1) continue;
ans.push_back(index + 1);
ans.push_back(i);
reverse(arr.begin(), arr.begin() + index + 1);
reverse(arr.begin(), arr.begin() + i);
}
return ans;
}
};