一.题目描述
有n个人排成一列,每个人身高不同,但是你知道第x个人前面有y个人比他矮,求问如果按照身高从矮到高排,每个人应该排在第几个位置。
二.题目理解
这个题就是给你个list,这个list下标代表一个人,每个值代表这个人前面比他矮的人的个数。最后返回一个list,该list下标是这个人,list的值表示这个人的排序位置
三.题解
设n是人数,输入为alist
n = 5
alist = [0,1,2,1,3]
我的想法就是插入,根据矮的人数插入,循环插入之后,身高就是从矮到高的了。
怎么插呢?直接看代码吧
def solution(alist,n):
new = [i for i in range(n)]
nn = []
for i in range(n):
num_low = alist[i]
nn.insert(num_low,new[i])
re = [0]*n
for i in range(n):
re[nn[i]] = i+1
return re
每次的nn是排序好的,长度从0加到n,插入的是alist的下标。
不知道咋说了,慢慢看吧