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; } };