LeetCode_1122. Relative Sort Arr
2020-07-11 本文已影响0人
钱晓缺
重要知识点:所有的数据结构,都可以用函数建造
比如列表:c = [a[i]+b[i]) for i in range(0,len(a))] 后面加个for循环就行了
比如字典:C={i:b for b, i in enumerate(B)}
sorted 函数 的key传入的是可以对输入数列做操作的函数
Input:arr1 = [2,3,1,3,2,4,6,7,9,2,19], arr2 = [2,1,4,3,9,6]
Output:[2,2,2,1,4,3,3,9,6,7,19]
将arr1根据arr2的顺序排序
方法一:
return sorted(arr1, key=(arr2+sorted(arr1)).index)
解释:
首先,整个的排序过程是,如果arr1的值在arr2中,则按照arr2排序,反之按照arr1排序
所以我用arr2+已经排序好的arr1,然后用sorted函数,key是index
方法二:
A=sorted(set(arr1)-set(arr2))
B=arr2+A
k = {b: i for i, b in enumerate(B)}
return sorted(arr1, key=lambda a: k.get(a))
我以前也不知道字典还能这么搞,先生成一个字典,内容是B的值加B的index
然后把B变成arr2+已经排序好的arr1比arr2多的元素、
使用sorted函数,key是字典的index