#LeetCode 406. Queue Reconstruction by Height
原题链接:
###题目大意:
有一个由[h,k]组成的随机的数组如下案例:
[[7,0], [4,4], [7,1], [5,0], [6,1], [5,2]]
h表示高度,k表示在此之前,大于或等于此高度的元素数量。
要求排序为符合题目的数列,上述案例结果如下所示:
[[5,0], [7,0], [5,2], [6,1], [4,4], [7,1]]
###解题思路:
很简单的排序,但是有个很精巧的机关。
首先按照高度从大到小排序,相同的高度按照位置从小到大排序
然后从第一个开始插入到一个新数组中。此时很"凑巧"的,第二个k就是应该插入的位置。因为根据之前的排序,当前,新数组的所有元素都大于等于旧数组。
###AC代码:
/** * 406. Queue Reconstruction by Height * @param peoples * @return */ public static int[][] reconstructQueue (int[][] peoples){ Arrays.parallelSort(peoples, (a, b) -> a[0] != b[0] ? b[0] - a[0] : a[1] - b[1]); Listresult = new ArrayList<>(); for(int i=0;i