问题:
题目来源:力扣(LeetCode)
难度:简单
分析:
非常好的字典操作练习题。
思路:统计arr1中与arr2相同的元素及其个数,和arr1中与arr2不同的元素及其个数。相同的部分按照arr2的顺序排序,不同的部分直接sort。然后将两部分拼接到一起。
解决方法:
1:字典
class Solution:
def relativeSortArray(self, arr1: List[int], arr2: List[int]) -> List[int]:
in_arr2 = []
not_in_arr2 = []
Hash = {}
for i in arr1:
Hash[i] = Hash.get(i, 0) + 1
arr1 = set(arr1)
for j in arr1:
if j not in arr2:
not_in_arr2 += [j]*Hash[j]
not_in_arr2.sort()
for k in arr2:
in_arr2 += [k]*Hash[k]
return in_arr2+not_in_arr2