题目连接:
https://leetcode-cn.com/problems/queue-reconstruction-by-height/submissions/
题目大意:
假设有打乱顺序的一群人站成一个队列。 每个人由一个整数对(h, k)表示,其中h是这个人的身高,k是排在这个人前面且身高大于或等于h的人数。 编写一个算法来重建这个队列。
来源:力扣(LeetCode)
具体思路:
贪心+排序,注意如何在类里面进行sort排序;然后vector可以指定位置排序,具体方法如下:q.insert(pos,val);
按照身高降序排列,k值升序排列
假设当前有两个队 A队 和 B队 。A队是原来的,B队是排好的。我们当前从A里面拿一个出来放到B中,我们只需让B中人的身高都比拿出来的这个高,就可以了,这样就能在B中插入A 了。
如果身高按照升序排列,会造成语法错误
1 class Solution { 2 public: 3 vector<vector<int>> reconstructQueue(vector<vector<int>>& people) { 4 sort(people.begin(),people.end(),[](const vector<int>& t1 ,const vector<int>& t2){ 5 if(t1[0]!=t2[0])return t1[0]>t2[0]; 6 return t1[1]<t2[1]; 7 }); 8 vector<vector<int>>ans; 9 for(auto i : people){ 10 ans.insert(ans.begin() + i[1],i); 11 } 12 return ans; 13 } 14 };