11贪心:根据身高重建队列

11贪心:根据身高重建队列

406. 根据身高重建队列

本题有两个维度,h和k,看到这种题目一定要想如何确定一个维度,然后再按照另一个维度重新排列。

09贪心:分发糖果和此题有点点的像。

遇到两个维度权衡的时候,一定要先确定一个维度,再确定另一个维度。

如果两个维度一起考虑一定会顾此失彼

那么究竟先按h排序呢,还是先按照k排序呢?

如果按照k来从小到大排序,排完之后,会发现k的排列并不符合条件,身高也不符合条件,两个维度哪一个都没确定下来。

那么按照身高h来排序呢,身高一定是从大到小排(身高相同的话则k小的站前面),让高个子在前面。

此时我们可以确定一个维度了,就是身高,前面的节点一定都比本节点高!

java 复制代码
class Solution {
    public int[][] reconstructQueue(int[][] people) {
        //对身高进行从大到小的排序,然后根据k来调整顺序(先确定一个,再确定另一个)
        Arrays.sort(people, (p1, p2) -> {
            if(p1[0] == p2[0]) return p1[1] - p2[1];//身高一样k大在后
            return p2[0] - p1[0];//身高从大到小
        });

        LinkedList<int[]> que = new LinkedList<>();

        for(int[] p : people){
            que.add(p[1], p);//Linkedlist.add(index, value),会将value插入到指定index里。
        }

        return que.toArray(new int[people.length][]);
    }
}

局部最优:优先按身高高的people的k来插入。插入操作过后的people满足队列属性

全局最优:最后都做完插入操作,整个队列满足题目队列属性

局部最优可推出全局最优,找不出反例,那就试试贪心。

相关推荐
我变成萤火虫5 天前
反悔贪心(经典题目讲解)
c++·算法·贪心算法·stl·排序算法·反悔贪心
我变成萤火虫6 天前
河南萌新联赛2026第(四)场:南阳理工学院
数据结构·c++·算法·贪心算法·stl·动态规划
stolentime8 天前
AT_agc066_a [AGC066A] Adjacent Difference题解
c++·算法·贪心算法·构造
我变成萤火虫8 天前
2026 ICPC沈阳邀请赛Vp补题
数据结构·c++·算法·贪心算法·stl·排序算法·动态规划
小星星闪亮登场11 天前
2026河南萌新联赛第四场--南阳理工学院
数据结构·算法·贪心算法·动态规划·哈希算法·广度优先
我变成萤火虫12 天前
河南萌新联赛2026第(三)场:郑州轻工业大学
数据结构·c++·算法·贪心算法·stl·深度优先·哈希算法
chuan.bai12 天前
Java RAG 实战(第 8 篇):Spring Boot RAG 查询 API
java·spring boot·贪心算法
瑞码空间12 天前
贪心算法详情分析
贪心算法·算法设计·算法分析
-dzk-12 天前
【贪心算法】LC 121.买卖股票的最佳时机
算法·贪心算法
weixin_BYSJ198717 天前
springboot酒店管理系统--附源码27436
java·spring boot·python·随机森林·贪心算法·eclipse·django