先把people按照第一项降序排列(第一项一样的按第二项升序)。然后重新插入即可。
其中要注意的是重写了sort的比较规则,写在一个class内需要在函数前加static。
class Solution {
public:
static bool cmp(pair<int, int> a, pair<int, int> b)
{
if (a.first == b.first) return a.second < b.second;
else return a.first > b.first;
}
vector<pair<int, int>> reconstructQueue(vector<pair<int, int>>& people) {
vector<pair<int, int>> res;
if (people.empty()) return res;
sort(people.begin(), people.end(),cmp);
res.push_back(people[0]);
for (int i = 1; i < people.size(); i++)
res.insert(res.begin()+people[i].second, 1, people[i]);
return res;
}
};