[LeetCode]406. Queue Reconstruction by Height

本文介绍了一种根据人们身高及前面高个子数量来重建队列的算法。该算法首先按照身高降序、相同身高时按人数升序对人员进行排序,然后根据每个人前面应有高个子的数量将其插入到正确的位置。

https://leetcode.com/problems/queue-reconstruction-by-height/?tab=Description

人排队,int[0]表示高度,int[1]表示前面有多少个高度大于等于当前人,将之排序




高度降序、大于等于的人数升序排列,当前人的插入位置就是他的int[1]

可以考虑成先排最高的,再排第二高的,排到当前位置时高度大于等于他的就是int[1]

public class Solution {
    public int[][] reconstructQueue(int[][] people) {
        Arrays.sort(people, new Comparator<int[]>() {
            public int compare(int[] p1, int[] p2) {
                return p1[0] == p2[0] ? p1[1] - p2[1] : p2[0] - p1[0];
            }
        });
        LinkedList<int[]> list = new LinkedList();
        for (int[] p : people) {
            list.add(p[1], p);
        }
        return list.toArray(new int[people.length][]);
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值