Leetcode 406.根据身高重建队列

Posted kexinxin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode 406.根据身高重建队列相关的知识,希望对你有一定的参考价值。

根据身高重建队列

假设有打乱顺序的一群人站成一个队列。 每个人由一个整数对(h, k)表示,其中h是这个人的身高,k是排在这个人前面且身高大于或等于h的人数。 编写一个算法来重建这个队列。

注意:
总人数少于1100人。

示例

输入:

[[7,0], [4,4], [7,1], [5,0], [6,1], [5,2]]

 

输出:

[[5,0], [7,0], [5,2], [6,1], [4,4], [7,1]]

 

首先找到身高最高的人并对他们进行排序。

然后找到身高次高的人,按照他们的前面的人数把他们插入到最高的人群中。

因此这是一个排序和插入的过程,按照身高进行降序排序,然后把身高相同的人按照k进行升序排序。每次取出身高相同的一组人,按照k值把他们插入到队列中。

 

 1 import java.util.Arrays;
 2 import java.util.Comparator;
 3 import java.util.LinkedList;
 4 import java.util.List;
 5 
 6 public class Solution {
 7     public static int[][] reconstructQueue(int[][] people) {
 8         Arrays.sort(people, new Comparator<int[]>(){
 9             public int compare(int[] a, int[] b) {
10                 if(a[0] != b[0]) return -a[0]+b[0];
11                 else return a[1]-b[1];
12             }
13         });
14         List<int[]> res = new LinkedList<>();
15         for(int[] p : people) {
16             res.add(p[1], p);
17         }
18         return res.toArray(new int[people.length][]);
19     }
20 
21     public static void main(String[] args){
22         int[][] people={{7,0},{4,4},{7,1},{5,0},{6,1},{5,2}};
23         reconstructQueue(people);
24     }
25 }

 


以上是关于Leetcode 406.根据身高重建队列的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode406:根据身高重建队列

[LeetCode-Golang] 406. 根据身高重建队列

leetcode中等406根据身高重建队列

leetcode 406. Queue Reconstruction by Height 根据身高重建队列(中等)

题目地址(406. 根据身高重建队列)

406 Queue Reconstruction by Height 根据身高重建队列