根据身高重建队列(vector)

题目连接:

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

 

posted @ 2019-07-14 16:01  Let_Life_Stop  阅读(575)  评论(0编辑  收藏  举报