Advertisement
lifeiteng

406. Queue Reconstruction by Height

Sep 13th, 2018
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 0.89 KB | None | 0 0
  1. class Solution {
  2.     public int[][] reconstructQueue(int[][] people) {
  3.         Arrays.sort(people, (a, b) ->(a[0] == b[0] ? b[1] - a[1] : a[0] - b[0]));
  4.         int n = people.length;
  5.         List<int[]> list = new ArrayList<>();
  6.         for(int i = n - 1; i >= 0; i--)
  7.         {
  8.             int pos = binarySearch(list, people[i]);
  9.             // System.out.println(pos);
  10.             list.add(pos, people[i]);
  11.         }
  12.         int[][] re = new int[n][];
  13.         for(int i = 0; i < n; i++) re[i] = list.get(i);
  14.         return re;
  15.     }
  16.    
  17.     int binarySearch(List<int[]> list, int[] p)
  18.     {
  19.         int n = list.size();
  20.         if(n < 1) return 0;
  21.         int lo = 0, hi = n - 1;
  22.         while(lo < hi)
  23.         {
  24.             int m = (lo + hi) / 2;
  25.             if(m < p[1]) lo = m + 1;
  26.             else hi = m;
  27.         }
  28.         if(lo < p[1]) lo++;
  29.         return lo;
  30.     }
  31. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement