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;
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章