Suppose you have a random list of people standing in a queue. Each person is described by a pair of integers (h, k), where h is the height of the person and k is the number of people in front of this person who have a height greater than or equal to h. Write an algorithm to reconstruct the queue.
Note:
Example
Input:
Output:
 
 这道题给了我们一个队列,队列中的每个元素是一个pair,分别为身高和前面身高不低于当前身高的人的个数,让我们重新排列队列,使得每个pair的第二个参数都满足题意。
 基本思路:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 package  LeetCode;import  java.util.ArrayList;import  java.util.Arrays;import  java.util.Comparator;import  java.util.List;public  class  QueueReconstructionbyHeight      public  int [][] reconstructQueue(int [][] people) {         if  (people == null  || people.length == 0 ) {             return  people;         }         Arrays.sort(people, new  Comparator<int []>() {             @Override              public  int  compare (int [] p1, int [] p2)                   return  p1[0 ] == p2[0 ] ? p1[1 ] - p2[1 ] : p2[0 ] - p1[0 ];             }         });         List<int []> temp = new  ArrayList<>();         for  (int [] aPeople : people) {             if  (people.length == aPeople[1 ]) {                 temp.add(aPeople);             } else  {                 temp.add(aPeople[1 ], aPeople);             }         }         int  ans[][] = new  int [people.length][2 ];         for  (int  i = 0 ; i < temp.size(); i++) {             ans[i] = temp.get(i);         }         return  ans;     } }