我的思路:
将列表通过某种方式转换成字典 这样就可以记录每个数字出现的次数 然后根据出现次数来生成新的列表
遇到的问题:对字典不熟悉 似乎没有能够直接通过字典的key查找到value的办法 所以还是要遍历 时间复杂度太高
题解思路:
设置一个数组来存放数字出现的次数
这么简单的题居然没想出来...
代码:
def relativeSortArray(self, arr1, arr2):
# 用tmp来存储元素个数
tmp=[0]*1001
ans=[]
for i in arr1:
tmp[i]+=1
# 如果出现在arr2中 就append在返回列表的后面
for i in arr2:
while tmp[i]>0:
ans.append(i)
tmp[i]-=1
# 将剩下的只在arr1中出现的元素加在返回列表的后面
for i in range(len(tmp)):
if tmp[i]!=0:
while tmp[i] > 0:
ans.append(i)
tmp[i] -= 1
return ans