欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 社会 > 406. 根据身高重建队列

406. 根据身高重建队列

2025/7/3 20:37:00 来源:https://blog.csdn.net/2302_81240667/article/details/146964170  浏览:    关键词:406. 根据身高重建队列

链接

406. 根据身高重建队列 - 力扣(LeetCode)

题目

 思路

可能的一个思路是先对高的人进行处理,这样后面插入矮的人时不会影响高的人的位置。比如,如果先处理高个子,那么当插入一个矮个子的时候,前面的高个子的数量已经确定,不会因为插入矮个子而改变。 

先按h降序,再按组内k升序-->优先保证组内有序

然后再考虑“后面插入矮的人时不会影响高的人的位置

代码

people = [[7,0],[4,4],[7,1],[5,0],[6,1],[5,2]]
people.sort(key=lambda x:(-x[0],x[1])) # 优先组内有序
print(people)
res=[]
for i,p in enumerate(people):h,k=p[0],p[1]if k==i:res.append(p) # 在末尾插入elif k<i:res.insert(k,p) # 在k位置插入p
print(res)

反思

  1. 想清楚思路
    1. 先对高的进行处理-->先对整体的的身高进行排序([0])
    2. 满足限制--同样的身高,k小的在前面大的在后面([1])-1,2->局部有序
    3. 高中插入矮的不影响整体
  2. sort
    1. 排序规则key可以两个,`key=lambda x:(-x[0],x[1])`
  3. enumerate
    1. 有点像字典,拆成一个键一个值
    2. enumerate 是一个内置函数,用于在遍历可迭代对象(如列表、元组、字符串等)时,同时获取元素的索引和值。它返回一个枚举对象(enumerate 对象),可以通过 list()tuple() 转换为列表或元组。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词