題目描述:
思路:首先按照身高,從高到低進行排序,如果身高相同,則按照第二維數據從小到大進行排序,這樣可以保證每次插入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;
};