2023.7.10
题看不懂,看了随想录,简直是绝绝子的思路
遍历到到当前人时,他前面的所有人一定比他高(因为排过序),那只需要关注p[1],即需要前面有几个比他高的,就把他插到哪里。而由于他比前面所有人都低,因此他无论插在哪里,前面所有人的p[1]值仍是满足题意的。因此只需要一个一个处理就能达到最后的全局最优。
class Solution:
def reconstructQueue(self, people: List[List[int]]) -> List[List[int]]:
people.sort(key=lambda x: (-x[0], x[1]))
# sort是升序排列
# 第一个考虑项是-x[0],即按身高降序排列
# 如果第一个考虑项相等,则按第二项升序排列
# 如[7,0],[7,1]这样排列更符合题意
que = [] # 初始化队列
for p in people:
que.insert(p[1], p)
return que