Sunday, October 18, 2020

LeetCode [406] Queue Reconstruction by Height

 406. Queue Reconstruction by Height

Medium

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:
The number of people is less than 1,100.

 

Example

Input:
[[7,0], [4,4], [7,1], [5,0], [6,1], [5,2]]

Output:
[[5,0], [7,0], [5,2], [6,1], [4,4], [7,1]]
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
class Solution {
    public int[][] reconstructQueue(int[][] people) {
        Arrays.sort(people, (a, b)->{
            if(a[0]==b[0]) return Integer.compare(a[1], b[1]);
            else return Integer.compare(b[0], a[0]);
        });
        int n = people.length;
        List<int[]> list = new ArrayList<>();
        for(int i=0; i<n; ++i){
            if(list.isEmpty()) list.add(people[i]);
            else{
                int h = people[i][0], k = people[i][1];
                list.add(k, people[i]);
            }
        }

        return list.toArray(new int[0][0]);
    }
}

No comments:

Post a Comment