思路:
按身高降序排列,假如身高一样就按升序排列。
接下来,创建一个数组ret保存结果,遍历people数组;people第二个元素的值就是该people要插入数组ret中的位置,因为身高是按降序排列,而身高相同则按k升序排列,因此一定不会影响到后面的元素,如下图所示。
class Solution {
public:
vector<vector<int>> reconstructQueue(vector<vector<int>>& people) {
sort(people.begin(),people.end(),[](const vector<int>& v1,const vector<int>& v2)
{
//h按降序排序,假如h相等k按升序排序
return v1[0]>v2[0]||(v1[0]==v2[0]&&v1[1]<v2[1]);
});
vector<vector<int>> ret;
for(auto p:people)
{
ret.insert(ret.begin()+p[1],p);
}
return ret;
}
};