LeetCode题目:406. 根据身高重建队列

题目

题目链接:https://leetcode-cn.com/problems/queue-reconstruction-by-height/
题目解析:

  1. 首先要先了解,这可以将people[0]比作身高值,如果高的人是看不到比自己矮的的人的,所以高的只会看到比自己高的或者跟自己一样高的。根据这个想法就可以先将二维数组排序
  2. 排完序之后,可以利用LinkedList集合,利用add(index,Element)这个方法,如果索引相同的情况下,后来的会在先来的前面。所以我们把排好序的数组放入集合,然后再一一放入,这样就排列好了。
    在这里插入图片描述

代码

class Solution {
    public int[][] reconstructQueue(int[][] people) {
    //利用sort进行排序,排序的方法用Comparator的匿名内部类,排序的条件是,当o1[0]==o2[0]的时候,就让o1[1]和o2[1]进行判断,如果结果小于0则o1[1]<o2[1],否则就o2[1]>o1[1],如果不等于的话就后面的进行判断
  	 	Arrays.sort(people,new Comparator<int[]>() {

			@Override
			public int compare(int[] o1, int[] o2) {
				return o1[0] == o2[0] ? o1[1] - o2[1] : o2[0] - o1[0];
			}
    		
		});
		//创建LinkedList集合进行存储
    	List<int[]> linkedList = new LinkedList<>();
    	//开始遍历插入
    	for(int[] ans:people) {
    		linkedList.add(ans[1],ans);
    	}
    	int l = people.length;
    	//返回一个数组
		return linkedList.toArray(new int[l][2]);



    }
}

猜你喜欢

转载自blog.csdn.net/qq_41816516/article/details/106734858