题目传送门
https://leetcode-cn.com/problems/queue-reconstruction-by-height/description/
思路:
用插入法,因为将身高最高高的一组用户排序完成后,仅需要将身高低的用户一组一组排序插入即可(身高低的用户不会影响身高高的用户的k)。
1)先将身高最高的一组用户根据 k (在这个人前面,且身高大于等于他的人数)从小到大排序.
2)将身高第二高的一组用户根据k进行排序,然后将k作为插入时的索引,将用户插入。
3)重复2),将身高第三高组用户同样方式插入。
class Solution:
def reconstructQueue(self, people):
"""
:type people: List[List[int]]
:rtype: List[List[int]]
"""
a = people
a.sort(key = lambda x:(-x[0],x[1]))
if len(a) ==1:
return a
else:
index = []
last_i = 0
for i in range(len(a)-1):
if a[i][0] - a[i+1][0] != 0:
index.append(a[last_i:i+1])
last_i = i + 1
index.append(a[last_i:])
for j in range(1,len(index)):
aim = index[j]
for ss in range(len(aim)):
index[0].insert(aim[ss][1],aim[ss])
return index[0]