题目来源
一道贪心题,给你一堆pair,表示一个人的身高以及前面有几个人高于等于他(她),然后让你将其按顺序排好。
我思考了一会没啥想法,然后就看了答案。
实际上只要先将数组排好序,先按身高降序排序,再按第二个参数升序排序,然后从头往尾遍历,因为已经插入的都比大于等于待插入的,所以实际上后面这些数不会对前面的造成影响。
class Solution {
public:
vector<pair<int, int>> reconstructQueue(vector<pair<int, int>>& people) {
sort(people.begin(), people.end(), [](pair<int, int>p1, pair<int, int>p2) {
return p1.first > p2.first || (p1.first == p2.first && p1.second < p2.second);
});
vector<pair<int, int>> res;
for (pair<int, int> person : people)
res.insert(res.begin()+person.second, person);
return res;
}
};