leetcode题目
英文:406. Queue Reconstruction by Height
题意:按照身高重建队列顺序。因为只关注比自己高的人,所以先按照身高排序,并且身高相同时,k大的肯定排在后面。因为两个人身高同为7 不可能前面只有0个的人 最终会排在前面有1个人后面我们利用排序先把后面安排的人的干扰因素去掉。
注意:使用lambda表达式排序比自定义比较函数要快一倍。
class Solution {
public:
static bool cmp(vector<int> a, vector<int> b){ //先按照身高从大到小排 当身高相同时按照k排
if(a[0] != b[0]) return a[0] > b[0];
return a[1] < b[1];
}
vector<vector<int>> reconstructQueue(vector<vector<int>>& pe) {
sort(pe.begin(), pe.end(), cmp);
vector<vector<int>> res;
for(auto p : pe){
res.insert(res.begin() + p[1], p); //根据k的位置 插入p
}
return res;
}
};