leetcode406. 根据身高重建队列

该文章介绍了一个算法问题,即如何根据身高从高到低排序人们,并确保每个人前面的人数不超过他们的身高。解决方案是首先按身高降序排列,然后遍历列表,将矮个子插入其应处的正确位置,不影响前面高个子的相对顺序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

从高到低排序的原因是矮的人插入其所在位置时不会对高的产生影响
这样前面排好了,把矮的人插入其应该所在的位置就行

def reconstructQueue(self, people):
        """
        :type people: List[List[int]]
        :rtype: List[List[int]]
        """
        res = []
        people = sorted(people,key = lambda x : (-x[0],x[1]))   #身高从高到低排序,就知道每个身高前面比它高的有多少人了
        for i in people:                                        #从高到矮判断,排序后的相同高度之间的相对位置已经正确了
            if len(res) > i[1]:                                 #排在矮子前面的人多于矮子应该所在的位置
                res.insert(i[1],i)                              #将矮子放到正确的位置,矮子放在哪都不会影响之前高个子之间的相对位置
            else:                                               #由于是从高到低排序的,后面低的人排在哪都不会影响高的人
                res.append(i)
        return 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值