LeetCode_406. Queue Reconstruction by Height

题目描述:
在这里插入图片描述
思路:首先按照身高,从高到低进行排序,如果身高相同,则按照第二维数据从小到大进行排序,这样可以保证每次插入people到结果队列的时候,结果队列里面的人都是比当前执行操作的人身高高的。然后就可以按照第二维的数量从结果队列的头往后数(即按照偏置值插入)

bool cmp(vector<int> it1,vector<int> it2){
    if(it1[0]!=it2[0])
        return it1[0]>it2[0];//将身高高的排在前面
    return it1[1]<it2[1];//将编号小的排在前面(保证每次插入偏置的时候都是有效位置)
}

class Solution {
public:
    vector<vector<int>> reconstructQueue(vector<vector<int>>& people) {
        if(people.empty())
            return res;
        sort(people.begin(),people.end(),cmp);
        for(int i=0;i<people.size();i++){
            res.insert(res.begin()+people[i][1],people[i]);
        }
        return res;
    }
private:
    vector<vector<int>> res;
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章