欢迎来到飞鸟慕鱼博客,开始您的技术之旅!
当前位置: 首页知识笔记正文

力扣刷题java,力扣刷题题库

终极管理员 知识笔记 71阅读
1.十进制整数的反码

每个非负整数 N 都有其二进制表示。例如 5 可以被表示为二进制 10111 可以用二进制 1011 表示依此类推。注意除 N 0 外任何二进制表示中都不含前导零。

二进制的反码表示是将每个 1 改为 0 且每个 0 变为 1。例如二进制数 101 的二进制反码为 010。

给你一个十进制数 N请你返回其二进制表示的反码所对应的十进制整数。

方法一位运算 
#方法一位运算def bitwiseComplement(n):    tem2    cn    while c>1:        c>>1        tem<<1  #找到最高二进制位1的位置    return n^(tem-1)  #异或运算相同为0相异为1,全为1的数进行异或
2.将数字变成 0 的操作次数

给你一个非负整数 num 请你返回将它变成 0 所需要的步数。 如果当前数字是偶数你需要把它除以 2 否则减去 1 。

方法一位运算 
#方法一位运算def numberOfSteps(num):    res0    while num:        res(num&1)(num>1) #判断最右边是不是1和num是不是大于1,为1进行两步操作        num>>1    return res
3.根据数字二进制下 1 的数目排序 

给你一个整数数组 arr 。请你将数组中的元素按照其二进制表示中数字 1 的数目升序排序。

如果存在多个数字二进制中 1 的数目相同则必须将它们按照数值大小升序排列。

请你返回排序后的数组。

方法一排序位运算 
#方法一排序位运算def sortByBits(arr):    def count1(n):        res0        while n :            resn&1            n>>1        return res #计算1的个数    return sorted(arr,keylambda x: (count1(x),x)) 

标签:
声明:无特别说明,转载请标明本文来源!