一:你不一定逆风翻盘,但请一定向阳而生
二:题目
三:上码
class Solution {
public:/**解析题意:这个给出的people的数组中,我们需要根据其元素people[i] = [hi,ki];然后根据其ki来表示大于hi身高的人的个数,来进行排序。思路:1.首先我们要排序,那么我们到底是按哪个关键值来排序呢? 1>:如果按k值排序的话,行不通 people = [[7,0],[4,4],[7,1],[5,0],[6,1],[5,2]] 如果按k值的话 那么的话[4,4]就会拍到最后,其违反了其前面只有4个身高比起高的规定2>:那就按h值排序 由高到低 遇见身高相似的话我们就需要将k值叫小的放到前面(因为k表示的是前面的身高比其高的),当按这样排好序后剩下的就是插入。排好序后: [[7,0],[7,1],[6,1],[5,0],[5,2],[4,4]] 我们拿[5,2]举例,[5,2]前面的一定比5要高,那么我们就可以将其插在下标为2的位置,因为前面下标为0,1的是比其身高要高的*/static bool cmp(const vector<int> &v1,const vector<int> &v2) {if(v1[0] == v2[0]) return v1[1] < v2[1];//当身身高一样,我们就比较k值return v1[0] > v2[0];}vector<vector<int>> reconstructQueue(vector<vector<int>>& people) {sort(people.begin(),people.end(),cmp);vector<vector<int> >ans;for(int i = 0; i < people.size(); i++) {int postion = people[i][1];//获取要插入的下标ans.insert(ans.begin()+postion,people[i]);}return ans;}
};