美文网首页
LeetCode_1122. Relative Sort Arr

LeetCode_1122. Relative Sort Arr

作者: 钱晓缺 | 来源:发表于2020-07-11 18:52 被阅读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

    相关文章

      网友评论

          本文标题:LeetCode_1122. Relative Sort Arr

          本文链接:https://www.haomeiwen.com/subject/jmyicktx.html