思路: 先从高到低排序,然后从高到低以此插入。
class Solution {
public:
//自定义排序,eg:[[7,0],[7,1],[6,0]]
static bool myCmp(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) {
sort(people.begin(),people.end(),myCmp);
for(int i=0;i<people.size();i++){
//位置不对应的交换
if(people[i][1]!=i){
int target=people[i][1];
int j=i;
vector<int>temp=people[i];
for(;j>target;j--){
people[j]=people[j-1];
}
people[target]=temp;
}
}
return people;
}
};