题解
class Solution {
public:
vector<vector<int>> reconstructQueue(vector<vector<int>>& people) {
sort(people.begin(), people.end(),[](vector<int> &a, vector<int> &b){ // 先把人按身高从大到小排序
return a[0] > b[0] || (a[0] == b[0] && a[1] < b[1]);
});
int size_ = people.size();
vector<vector<int>> reQueue;
for(int i = 0;i < size_; i++){
reQueue.insert(reQueue.begin() + people[i][1], people[i]);
}
return reQueue;
}
};
思路
把矮的人插入前面并不会改变高的人的顺序,所以应该按身高从大到小遍历,
按身高从小到大排序,然后按前面人数从小到大排,
总结
这里学到了按多种排序规则排序的方法,
∣
∣
||
∣∣运算符可以实现多层次的排序规则。
还有,在写sort函数的lambda时,直接传vector和传vector的引用差了很多时间和内存。