20.11.17 leetcode406

题目链接:https://leetcode-cn.com/problems/queue-reconstruction-by-height/

题意:有打乱顺序的n个人排成一个队列,每个人有两个属性(h,k),分别是身高和排在他前面的人数,求排好顺序的队列。

分析:我们按照身高从高到低排列好队列(身高相同的谁前面人少谁排在前面),那从第一个开始插入答案向量,前面有i个人,就插到第i+1位。

class Solution {
public:
    vector<vector<int>> reconstructQueue (vector<vector<int>>& people) {
        sort(people.begin(),people.end(),[](const vector<int>& u,const vector<int>& v){
            return u[0]>v[0]||u[0]==v[0]&&u[1]<v[1];
        });
        int n=people.size();
        vector<vector<int>> ans;
        for(auto& person : people){
            ans.insert(ans.begin()+person[1],person);
        }
        return ans;
    }
};
原文地址:https://www.cnblogs.com/qingjiuling/p/13995190.html