题目描述:
思路:首先按照身高,从高到低进行排序,如果身高相同,则按照第二维数据从小到大进行排序,这样可以保证每次插入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;
};