排队问题

2017-12-15  本文已影响0人  拔丝圣代

排队问题


已知每个人的身高 h,他前面身高大于等于他的人数为 k,给这些人排队,求这些人的顺序。

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]]

思路:

高个先排,后面逐渐插队,同样身高的先插前面的,每个人插队时,k就是要插入的位置的下标。
代码:

class Solution(object):
    def reconstructQueue(self, people):
        """
        :type people: List[List[int]]
        :rtype: List[List[int]]
        """
        l = len(people)
        result = []
        people.sort(key=lambda x: (-x[0], x[1]))
        for h, k in people:
            result.insert(k, [h,k])
        return result
上一篇下一篇

猜你喜欢

热点阅读