406. 根据身高重建队列


假设有打乱顺序的一群人站成一个队列。 每个人由一个整数对(h, k)表示,其中h是这个人的身高,k是排在这个人前面且身高大于或等于h的人数。 编写一个算法来重建这个队列。

注意:
总人数少于1100人。

示例

输入:
[[7,0], [4,4], [7,1], [5,0], [6,1], [5,2]]

输出:
[[5,0], [7,0], [5,2], [6,1], [4,4], [7,1]]

解题思路:建立一个新列表,将h按照从大到小,k按照从小到大的顺序进行插入。这样做的理由是先插入身高h大的,后插入身高h小的可以使得后面的插入对前面已经排序的不产生影响;先插入人数k小的,后插入人数k大的可以使得后面的插入对前面已经排序的不产生影响。

Python3代码如下:

class Solution(object):
    def reconstructQueue(self, people):
        """
        :type people: List[List[int]]
        :rtype: List[List[int]]
        """
        result = []
        people.sort(key=lambda p:(-p[0],p[1]))
        for p in people:
            result.insert(p[1],p)
        return result
        

LeetCode-406. 根据身高重建队列

相关文章:

  • 2021-11-26
  • 2021-06-03
  • 2022-12-23
  • 2022-12-23
  • 2021-10-31
  • 2021-05-19
  • 2021-11-03
  • 2022-12-23
猜你喜欢
  • 2021-05-23
  • 2022-12-23
  • 2022-12-23
  • 2021-06-29
  • 2021-07-15
  • 2021-08-15
相关资源
相似解决方案