美文网首页
406. 根据身高重建队列

406. 根据身高重建队列

作者: 名字是乱打的 | 来源:发表于2020-11-16 22:12 被阅读0次

    假设有打乱顺序的一群人站成一个队列。 每个人由一个整数对(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]]


    思路:
    先按身高排,然后矮个子插入到自己位置

    import java.util.Arrays;
    import java.util.LinkedList;
    class Solution {
        public int[][] reconstructQueue(int[][] people) {
             //按照身高降序 K升序排序 
    
            Arrays.sort(people, (o1, o2) -> o1[0] == o2[0] ? o1[1] - o2[1] : o2[0] - o1[0]);
           //K值定义为 排在h前面且身高大于或等于h的人数 
            //因为从身高降序开始插入,此时所有人身高都大于等于h
            //因此K值即为需要插入的位置
            LinkedList<int[]> list = new LinkedList<>();
            for (int[] i : people) {
                list.add(i[1], i);
            }
    
            return list.toArray(people);
        }
    }
    

    相关文章

      网友评论

          本文标题:406. 根据身高重建队列

          本文链接:https://www.haomeiwen.com/subject/eaqtiktx.html