![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
位运算
枫流仁武
这个作者很懒,什么都没留下…
展开
-
LeetCode 190 颠倒二进制位
颠倒给定的 32 位无符号整数的二进制位。提示:请注意,在某些语言(如 Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论整数是有符号的还是无符号的,其内部的二进制表示形式都是相同的。在 Java 中,编译器使用二进制补码记法来表示有符号整数。因此,在上面的示例 2中,输入表示有符号整数 -3,输出表示有符号整数 -1073741825。进阶:如果多次调用这个函数,你将如何优化你的算法?示例 1:输...原创 2021-03-29 08:21:24 · 61 阅读 · 0 评论 -
LeetCode 338 比特位计数
给定一个非负整数num。对于0 ≤ i ≤ num 范围中的每个数字i,计算其二进制数中的 1 的数目并将它们作为数组返回。示例 1:输入: 2输出: [0,1,1]示例2:输入: 5输出: [0,1,1,2,1,2]from typing import *class Solution: def countBits(self, num: int) -> List[int]: dp=[0]*(num+1) highest=0...原创 2021-03-03 08:46:35 · 101 阅读 · 0 评论 -
LeetCode 1601 交换数字
编写一个函数,不用临时变量,直接交换numbers = [a, b]中a与b的值。示例:输入: numbers = [1,2]输出: [2,1]from typing import *class Solution: def swapNumbers(self, numbers: List[int]) -> List[int]: numbers[0] = numbers[0] ^ numbers[1] numbers[1] = numbers原创 2021-01-14 10:41:38 · 79 阅读 · 0 评论 -
LeetCode 1680 连接连续二进制数字
给你一个整数n,请你将1到 n的二进制表示连接起来,并返回连接结果对应的 十进制数字对 109+ 7取余的结果。示例 1:输入:n = 1输出:1解释:二进制的 "1" 对应着十进制的 1 。示例 2:输入:n = 3输出:27解释:二进制下,1,2 和 3 分别对应 "1" ,"10" 和 "11" 。将它们依次连接,我们得到 "11011" ,对应着十进制的 27 。from typing import *class Solution: ...原创 2020-12-09 10:22:04 · 148 阅读 · 0 评论 -
LeetCode 222 完全二叉树的节点个数
给出一个完全二叉树,求出该树的节点个数。说明:完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~2h个节点。# Definition for a binary tree node.class TreeNode: def __init__(self, x): self.val = x self.left = None ..原创 2020-11-24 10:54:38 · 56 阅读 · 0 评论 -
LeetCode 260 只出现一次的数字3
给定一个整数数组nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。示例 :输入: [1,2,1,3,2,5]输出: [3,5]lowbit操作在树状数组中也见过,保留最右边的1,剩余全部变为0。存在两个数不同,最终异或结果肯定不为0,from typing import *class Solution: def singleNumber(self, nums: List[int]) -> List[int]: ..原创 2020-11-18 14:27:57 · 50 阅读 · 0 评论 -
LeetCode 201 数字范围按位与
给定范围 [m, n],其中 0 <= m <= n <= 2147483647,返回此范围内所有数字的按位与(包含 m, n 两端点)。示例 1:输入: [5,7]输出: 4示例 2:输入: [0,1]输出: 0本题关键在于找到两个数字的二进制公共前缀,然后后面的补0。class Solution: def rangeBitwiseAnd(self, m: int, n: int) -> int: shift = 0 .原创 2020-11-17 20:51:19 · 69 阅读 · 0 评论 -
LeetCode 1356 根据数组二进制下1的数目排序
利用位运算解决问题class Solution: def sortByBits(self, arr: List[int]) -> List[int]: dic1 = {} for val in arr: dic1[val] = self.num_one(val) arr.sort(key=lambda x: (dic1[x], x)) return arr def num_one(self,原创 2020-11-06 09:41:22 · 63 阅读 · 0 评论