406. 根据身高重建队列

Q:

在这里插入图片描述

A:

这题没做出来,记录下
利用题意中的k为排在前面且身高大于等于这个人的数量。则先把身高高的都排好,然后把当前这个人往里排的时候,就直接看这个人的k值是多少,插到对应位置就行了。异常巧妙的是,这个方法正好利用了题目k的定义,反正我是想不出来。

class Solution {
public:
    static bool cmp(const vector<int>& a,const vector<int>& b){
        return a[0]>b[0] or a[0]==b[0] and a[1]<b[1];
    }
    vector<vector<int>> reconstructQueue(vector<vector<int>>& people) {
        if(people.empty()){
            return vector<vector<int>>();
        }
        vector<vector<int>> res;
        sort(people.begin(),people.end(),cmp);
        // for(auto vec:people){
        //     cout<<vec[0]<<" "<<vec[1]<<endl;
        // }
        res.push_back(people[0]);
        for(int i=1;i<people.size();++i){
            res.insert(res.begin()+people[i][1],people[i]);
        }
        return res;
    }
};
posted @ 2019-11-07 20:05  NeoZy  阅读(136)  评论(0编辑  收藏  举报