LeetCode 406. Queue Reconstruction by Height

13 篇文章 0 订阅
12 篇文章 0 订阅

题解

这题可以巧妙地被结构为一道插排问题。
先sort,h从大到小排,h相同按k数从小到大。
此时数列前方的大的数已经成为一个局部完整序列了。因为小h不会影响
大h的k正确性,然后慢慢考虑后面的h要插入哪里就可以了。
这不就是插入排序么。


Code

class Solution {
public:
    static bool cmp(pair<int, int> &a, pair<int, int> &b){
        return a.first == b.first ? a.second < b.second : a.first > b.first;
    }
    vector<pair<int, int>> reconstructQueue(vector<pair<int, int>>& people) {
        sort(people.begin(),people.end(),cmp);
        
        int n=people.size();
        vector<pair<int, int>> res(n);
        for(int i=0;i<n;i++){
                
            for(int j= i;j>people[i].second;j--){ // 调位置 向后移动
                swap(res[j],res[j-1]);
            }
            res[people[i].second]= {people[i].first,people[i].second};// 插入空缺
        }
        return res;
    }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值