【代码随想录day 29】 力扣 406.根据身高重建队列

视频讲解:https://www.bilibili.com/video/BV1EA411675Y/?vd_source=a935eaede74a204ec74fd041b917810c

文档讲解:https://programmercarl.com/0406.根据身高重建队列.html#思路

力扣题目:https://leetcode.cn/problems/queue-reconstruction-by-height/

如果正向排序的话,需要考虑h的大小关系以及位次关系,但是如果倒着看的话,先将队列按从大到小的顺序排序,如果h相等,优先排k小的数组,这样就可以保证前面的数稳定大于后面的书,这时我们考虑k的大小,将数组插入到合适的位置,比如[7,0][7,1][5,0]就可以插入到第一个位置,变为[5,0][7,0][7,1],从后往前插入不需要考虑前面的数组的k,比如[7,1]就不用考虑,因为后面的插入到前面也不会影响他的k,所以就可以使用这个方法

cpp 复制代码
class Solution {
public:
    static bool cmp(const vector<int> &a, const vector<int> &b)
    {
        //如果相等,k小的排在前面
        if(a[0] == b[0])
        {
            return a[1] < b[1];
        }
        //如果不相等,h大的排前面
        return a[0] > b[0];
    }
    vector<vector<int>> reconstructQueue(vector<vector<int>>& people) {
        sort(people.begin(), people.end(),cmp);
        vector<vector<int>> que;

        for(int i = 0; i < people.size(); ++i)
        {
            //获取插入位置
            int position = people[i][1];
            que.insert(que.begin() + position, people[i]);
        }

        return que;
    }
};
相关推荐
CoovallyAIHub1 分钟前
AAAI 2026 | 华中科大联合清华等提出Anomagic:跨模态提示零样本异常生成+万级AnomVerse数据集(附代码)
深度学习·算法·计算机视觉
npupengsir15 分钟前
nano vllm代码详解
人工智能·算法·vllm
m0_5698814718 分钟前
C++中的组合模式高级应用
开发语言·c++·算法
m0_7301151123 分钟前
高性能计算负载均衡
开发语言·c++·算法
灰色小旋风30 分钟前
力扣19删除链表的倒数第N个结点(C++)
c++·算法·leetcode·链表
孞㐑¥30 分钟前
算法—记忆化搜索
开发语言·c++·经验分享·笔记·算法
二进制星轨31 分钟前
leecode-70-颜色分类-算法题解
数据结构·算法·排序算法
xushichao198932 分钟前
代码覆盖率工具实战
开发语言·c++·算法
2401_8579182933 分钟前
C++与WebAssembly集成
开发语言·c++·算法
2401_8796938734 分钟前
C++与微服务架构
开发语言·c++·算法