406. 根据身高重建队列

package leetcode;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;

public class demo_406 {
    public int[][] reconstructQueue(int[][] people) {
        //先按照数组中第一位第一位降序排序,再按照数组中第二位升序排序
        Arrays.sort(people,new Comparator<int[]>() {
            public int compare(int[] person1,int[] person2) {
                if(person1[0]!=person2[0]) {
                    return person2[0]-person1[0];
                }else {
                    return person1[1]-person2[1];
                }
            }
        });
        ArrayList<int[]>list=new ArrayList<int[]>(people.length);
        //插空法,使得插入的当前位置前面恰好有num[i]个人
        for(int[] num:people) {
            list.add(num[1], num);
        }
        return list.toArray(new int[people.length][]);
        
        
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        demo_406 demo=new demo_406();
        int[][] people= {{7,0},{4,4},{7,1},{5,0},{6,1},{5,2}};
        demo.reconstructQueue(people);
    }

}

 

posted on 2022-04-26 16:28  一仟零一夜丶  阅读(24)  评论(0)    收藏  举报