leetcode-根据身高重建队列

class Solution {
    public int[][] reconstructQueue(int[][] people) {
        if(people.length==0){
            return people;
        }
        Arrays.sort(people, (o1, o2) -> (o1[0]==o2[0])?o1[1]-o2[1]:o2[0]-o1[0]);
        ArrayList list = new ArrayList<>();
        for(int i=0;i

这是java自定义排序的准则。

这道题的思路就是先对people数组进行自定义排序,首要因素比较身高,身高相同比较index。

这里我们可以这样记自定义排序的规则。想要让数组升序,则o2-o1。否则(降序),则是o1-o2!!!

之后就需要用到贪心的思想了。

之后用一个arraylist装入所有的int[],如何装入?根据int[1]作为index,选定位置插入,最后再把arraylist转为int[]即可。

思想就是优先满足身高高的元素,因为这样之后的元素无论怎么插入也不可能影响已经插入了的元素

你可能感兴趣的:(leetcode,算法,leetcode,算法)