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

上一篇下一篇

猜你喜欢

热点阅读