当前位置: 首页 > news >正文

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() 转换为列表或元组。
http://www.dtcms.com/a/107118.html

相关文章:

  • Docker 构建镜像异常报错解决
  • 深入剖析Linux常用命令,助力高效操作
  • 23.6 CharGLM多模态API实战:24k上下文角色一致性优化全解析
  • cmake 中的命令
  • Java面试题总结
  • C语言 - 指针变量 + 1 的本质
  • Linux中动静态库的制作
  • AF3 OpenFoldSingleMultimerDataset类解读
  • 产品经理的大语言模型课 04 -模型应用的云、边、端模式对比
  • STM32开发板上生成PWM正弦波
  • XT1861 同步升压 DC-DC 变换器
  • Spring Boot 3.4.3 基于 JSqlParser 和 MyBatis 实现自定义数据权限
  • 【Qt】QList<T> list(n)构造函数创建列表时元素 T的默认值
  • AI写程序:视频裁剪小工具
  • 【模板】P2764 最小路径覆盖问题
  • 【Linux】ELF文件与库的加载
  • RNN模型与NLP应用——(8/9)Attention(注意力机制)
  • LeetCode每日温度
  • Zemax设计实例:手机广角镜头设计(FOV 120°)
  • 在centos7上安装ragflow
  • 第149场双周赛:找到字符串中合法的相邻数字、重新安排会议得到最多空余时间 Ⅰ、
  • 腾讯云智测试开发面经
  • javaSE————网络原理
  • 从吉卜力漫画到艺术创造:GPT-4o多种风格绘图Prompt大全
  • Redisson 操作 Redis Stream 消息队列详解及实战案例
  • HttpClient-03.入门案例-发送POST方式请求
  • Dell G16 7620克隆硬盘 扩容
  • 移远RG200U-CN模组适配问题
  • OpenCV 图形API(7)用于将笛卡尔坐标(x, y)转换为极坐标(magnitude, angle)函数cartToPolar()
  • 【编程之路】按指定大小合并数据块