Skip to content
Permalink
master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time
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]]
class Solution(object):
    def reconstructQueue(self, people):
        """
        :type people: List[List[int]]
        :rtype: List[List[int]]
        """
        '''
        construct the queue starting from the highest people and then insert the next highest people at proper position of the queue
        '''
        res_queue = []
        
        def reverse_key(element):
            return (element[0], -element[1])
        
        people_reverse = sorted(people, key=reverse_key, reverse=True)
        print(people_reverse)
        for person in people_reverse:
            res_queue.insert(person[1], person)
        return res_queue
		

Solution: https://leetcode.com/problems/queue-reconstruction-by-height/