class Solution { public: static int cmp(vector<int> a, vector<int> b){ if(a[0] != b[0]) // 第一个元素不相等,按照从大到小排序, return a[0]>b[0]; else // 第一个元素相等,第二个元素按照从小到大排序, return a[1]<b[1]; } vector<vector<int>> reconstructQueue(vector<vector<int>>& people) { int n = people.size(); sort(people.begin(), people.end(),cmp); vector<vector<int>> queue; queue.reserve(n); for(int i = 0; i < people.size(); i++){ // 排序后,以第二个元素为下标进行插入 queue.insert(queue.begin()+people[i][1],people[i]); } // for(const auto & p : people) { // queue.insert(queue.begin() + p[1], p); // } return queue; } };