目录
题目链接:969. 煎饼排序 - 力扣(LeetCode)
题目描述:
方法一:
class Solution {
public:
vector<int> pancakeSort(vector<int>& arr) {
vector<int> ans;
//与选择排序类似,就是每次在前n个数中选择一个最大的数,通过两次翻转排到第n个位置,以此类推
for (int n = arr.size(); n > 1; n--)
{
int maxi = 0; //前n个数中,最大数的下标
for (int i = 0; i < n; i++)
{
if (arr[i] > arr[maxi]) maxi = i;
}
//翻转两次,先将最大数翻转到首位,再翻转到第n个位置上
reverse(arr.begin(), arr.begin() + maxi + 1);
ans.push_back(maxi + 1);
reverse(arr.begin(), arr.begin() + n);
ans.push_back(n);
}
return ans;
}
};
这个方法挺有意思的,思路与直接选择排序类似,感觉可以出在考研题中