Leetcode 406.根據身高重建隊列
阿新 • • 發佈:2019-01-09
插入 family 大於 str 等於 tor 註意 宋體 tro
根據身高重建隊列
假設有打亂順序的一群人站成一個隊列。 每個人由一個整數對(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 publicint 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 } 18return 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.根據身高重建隊列