406. 根据身高重建队列
程序员文章站
2022-04-17 13:26:20
...
Q:
A:
这题没做出来,记录下
利用题意中的k为排在前面且身高大于等于这个人的数量。则先把身高高的都排好,然后把当前这个人往里排的时候,就直接看这个人的k值是多少,插到对应位置就行了。异常巧妙的是,这个方法正好利用了题目k的定义,反正我是想不出来。
class Solution {
public:
static bool cmp(const vector<int>& a,const vector<int>& b){
return a[0]>b[0] or a[0]==b[0] and a[1]<b[1];
}
vector<vector<int>> reconstructQueue(vector<vector<int>>& people) {
if(people.empty()){
return vector<vector<int>>();
}
vector<vector<int>> res;
sort(people.begin(),people.end(),cmp);
// for(auto vec:people){
// cout<<vec[0]<<" "<<vec[1]<<endl;
// }
res.push_back(people[0]);
for(int i=1;i<people.size();++i){
res.insert(res.begin()+people[i][1],people[i]);
}
return res;
}
};
下一篇: 406. 根据身高重建队列