要求:给身高及站前面不低于自己的人数,重排
思路:按从高到低,值从大到小排好,插入位置刚好是begin+值
class Solution {
public:
static bool cmp(vector<int> &a,vector<int> &b){
return a[0]!=b[0]?a[0]>b[0]:a[1]<b[1];
}
vector<vector<int>> reconstructQueue(vector<vector<int>>& people) {
//按身高从高到低,值从小到大
sort(people.begin(),people.end(),cmp);
int n=people.size();
int i=1;
vector<vector<int>> newpeople;
newpeople.push_back(people[0]);
while(i<n){
int ki=0;
if(people[i][1]==ki){
newpeople.insert(newpeople.begin(),people[i]);
++i;
continue;
}
for(int j=0;j<newpeople.size();j++){
if(newpeople[j][0]>=people[i][0]){
++ki;
if(people[i][1]==ki){
newpeople.insert(newpeople.begin()+j+1,people[i]);
++i;
break;
}
}
}
}
return newpeople;
}
};