[969. Pancake Sorting 翻转排序][1]
[969. Pancake Sorting 翻转排序][1]
思路
因为是只能反转前 N 个元素,因此从后向前依次把最大的排好即可
最优解
class Solution {
public:
vector<int> pancakeSort(vector<int>& A) {
vector<int> res;
for(int i=0;i<A.size()-1;i++) {
auto maxPos = max_element(A.begin(), A.end()-i);
res.push_back(maxPos-A.begin()+1);
res.push_back(A.size()-i);
reverse(A.begin(), maxPos+1);
reverse(A.begin(), A.end()-i);
}
return res;
}
};收获
STL 的 max_element 返回的是最大数所在的地址,迭代器 begin() 和 end() 返回的分别是第一个元素的地址和最后一个元素的地址
数组的翻转操作:reverse(开始地址,结束地址+1)
#sort #array #stl #iterator