LeetCode #1122. Relative Sort Array
作者:互联网
题目
解题方法
设置一个字典初始化键值对为arr2中的所有元素和0,遍历arr1,计数每个字典中元素出现的次数,如果不在字典中就把它加进去,再把这个数加到arr3中。对arr3排序,然后分别遍历arr2和arr3中所有元素,按照字典中对应的出现频数向返回值数组rat中写数字即可。
时间复杂度:不知道,挺快的,28 ms, faster than 97.01%,根据arr3的长度而变化
空间复杂度:O(n),临时数组arr3、计数字典dic,还有返回值rat,最长为arr1的长度
代码
class Solution:
def relativeSortArray(self, arr1: List[int], arr2: List[int]) -> List[int]:
dic = {}
for i in arr2:
dic[i] = 0
arr3 = []
for i in arr1:
if i in dic:
dic[i] += 1
else:
dic[i] = 1
arr3.append(i)
arr3.sort()
rat = []
for i in arr2:
count = dic[i]
while count:
rat.append(i)
count -= 1
for i in arr3:
count = dic[i]
while count:
rat.append(i)
count -= 1
return rat
标签:Sort,count,1122,dic,Relative,rat,arr3,arr2,字典 来源: https://www.cnblogs.com/RatsCommander/p/14029261.html