[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