zoukankan      html  css  js  c++  java
  • 1356. 根据数字二进制下 1 的数目排序

     

    sort()函数:

      sort()函数是原址排序,字符串、元组没有sort()方法——因为均不可修改。

      如果需要一个排序好的副本,同时保持原有列表不变,可以这样操作:

    1   x =[4, 6, 2, 1, 7, 9]
    2 
    3   y = x[ : ]
    4 
    5   y.sort()

      注:y = x[ : ] 通过分片操作将列表x的元素全部拷贝给y,如果简单的把x赋值给y(y = x),y和x还是指向同一个列表,并没有产生新的副本。

      实例:sort(key, reverse=False)

      参数列表:

      key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序;

      reverse是排序规则,默认false(升序排列),true(降序排列)。

     

     sorted()函数

      sorted()用于对可迭代对象进行排序(可迭代对象包括列表、字典、set、甚至是字符串)。

      sorted()排序会保留原list。

      实例:sorted(arr, cmp=None, key=lambda num: (bin(num)[2:].count('1'), num), reverse=False)

      参数列表:

      arr是可迭代对象;

      cmp -- 可以自定义的比较函数,这个具有两个参数,参数的值都是从可迭代对象中取出,此函数必须遵守的规则为,大于则返回1,小于则返回-1,等于则返回0。

      key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。上例中有两个排序依据:首先是arr中各元素取二进制,其中‘1’字符的个数,其次是元素本身的数值大小——即将数组中的元素按照其二进制表示中数字 1 的数目升序排序。如果存在多个数字二进制中 1 的数目相同,则必须将它们按照数值大小升序排列;

      reverse是排序规则,默认false(升序排列),true(降序排列)。

      返回值:排好序的list——set经sorted()后也返回list。

     

     python中的进制转换内置函数

    本题有两个排序条件:

    二进制中‘1’的个数、十进制数值大小,因此用sort()和sorted()都可实现。

    代码如下。

     1 class Solution(object):
     2     def sortByBits(self, arr):
     3         """
     4         :type arr: List[int]
     5         :rtype: List[int]
     6         """
     7         arr.sort(key=lambda num: (bin(num)[2:].count('1'), num), reverse=False)
     8         return arr
     9 
    10     def sortByBits2(self, arr):
    11         """
    12         :type arr: List[int]
    13         :rtype: List[int]
    14         """
    15         return sorted(arr, key=lambda num: (bin(num)[2:].count('1'), num), reverse=False)
    16 
    17 
    18 if __name__ == '__main__':
    19     solution = Solution()
    20     print(solution.sortByBits(arr=[0, 1, 7, 8, 2, 3, 4, 5, 6]))
  • 相关阅读:
    Android AHandle AMessage
    android java 与C 通过 JNI双向通信
    android 系统给应用的jar
    UE4 unreliable 同步问题
    UE4 difference between servertravel and openlevel(多人游戏的关卡切换)
    UE4 Run On owing Client解析(RPC测试)
    UE4 TSubclassOf VS Native Pointer
    UE4 内容示例网络同步Learn
    UE4 多人FPS VR游戏制作笔记
    UE4 分层材质 Layerd Materials
  • 原文地址:https://www.cnblogs.com/panweiwei/p/12712756.html
Copyright © 2011-2022 走看看