其他分享
首页 > 其他分享> > 406. 根据身高重建队列

406. 根据身高重建队列

作者:互联网

贪心

import java.util.Arrays;
import java.util.Comparator;
import java.util.LinkedList;

class Solution {
    public int[][] reconstructQueue(int[][] people) {

        /**
         * 根据比较器对身高进行降序排序,如果身高相同,根据第二个索引升序排序
         */
        Arrays.sort(people, new Comparator<int[]>() {
            @Override
            public int compare(int[] o1, int[] o2) {
                if (o1[0] == o2[0]){
                    return o1[1] - o2[1];
                }
                return o2[0] - o1[0];
            }
        });

        /**
         * 对身高从高到低进行排序,这样就可以将每个元素按照第二个索引进行插入
         * 因为前面大于等于它的元素个数不会变
         */
        LinkedList<int[]> list = new LinkedList<>();

        for (int[] arr : people){
            list.add(arr[1], arr);
        }

        /**
         * list.toArray(new int[n][])方法将列表转换为数组
         */
        return list.toArray(new int[people.length][]);
    }
}

/**
 * 时间复杂度 O(n)
 * 空间复杂度 O(1)
 */

https://leetcode-cn.com/problems/queue-reconstruction-by-height/

标签:people,队列,list,406,int,new,身高,o2,o1
来源: https://www.cnblogs.com/taoyuann/p/15939183.html