题意分析:原本有一排同学,他们都记录了自己的位置和前面有多少人比他高的信息,现在将这群人打散,请根据他们的信息换原他们原来的排列
解题思路:
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
//自定义vector排序
bool comp(vector<int>& a, vector<int>& b) {
if (a[0] > b[0])
return true;
else if (a[0] == b[0] && a[1] < b[1])
return true;
else ///这里的else return false非常重要!!!!!
return false;
}
class Solution {
public:
vector<vector<int>> reconstructQueue(vector<vector<int>>& people) {
if (people.size() < 2) return people;
sort(people.begin(), people.end(), comp);
vector<vector<int>> result;
for (int i = 0; i < people.size(); i++) {
if (i == people[i][1]) {
result.push_back(people[i]);
continue;
}
result.insert(result.begin() + people[i][1], people[i]);
}
return result;
}
};