LeetCode406根据身高重建队列(先排序再插入)

题目
在这里插入图片描述
数对问题的处理方法基本就是对第一维升序排序 第二维降序排序 或者第一维降序 第二维升序 排序后就好好处理很多
本题的思路是将个高的排好 然后将个小的挨个插入 插入时候可以保证不会影响到后面个高的 因为他一定比身后个高的小
例如
// [7,0], [7,1], [6,1], [5,0], [5,2], [4,4]
// 再一个一个插入。
// [7,0]
// [7,0], [7,1]
// [7,0], [6,1], [7,1]
// [5,0], [7,0], [6,1], [7,1]
// [5,0], [7,0], [5,2], [6,1], [7,1]
// [5,0], [7,0], [5,2], [6,1], [4,4], [7,1]

    public int[][] reconstructQueue(int[][] people) {
    
    
        //先把个高的排好 个矮的插入进去
        //身高按照降序排列 人数按照升序排列
        Arrays.sort(people, new Comparator<int[]>() {
    
    
            @Override
            public int compare(int[] a, int[] b) {
    
    
                if (a[0] == b[0]){
    
    
                    return a[1]-b[1];
                }else return b[0]-a[0];
            }
        });
        List<int []> list = new ArrayList<>();
        for (int i = 0; i < people.length; i++) {
    
    
            list.add(people[i][1],people[i]);
        }
        return list.toArray(new int[list.size()][2]);
    }

猜你喜欢

转载自blog.csdn.net/qq_43434328/article/details/114579818