bool cmp(const vector<int>& a, const vector<int>& b){
if(a[0] == b[0])
return a[1]<b[1];//k升序
return a[0]>b[0];//身高降序
}
class Solution {
public:
vector<vector<int>> reconstructQueue(vector<vector<int>>& people) {
vector<vector<int>> 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;
}
};
- 二维数组身高降序排序,比自己身高高的人数(即k值)升序排序。排列好后,k为插入位置,依次插入。先插入身高高的插入的原因是,身高高的插入后,再插入身高小的对k值不产生影响。