位运算

作者: winter_sweetie | 来源:发表于2021-03-08 14:55 被阅读0次

缺失

268. 缺失数字

class Solution:
    def missingNumber(self, nums: List[int]) -> int:
        curr = 0
        for i in range(len(nums)+1):
            curr ^= i
        for i in nums:
            curr ^= i
        return curr

ps:跟位运算无关但跟“缺失”有关的题目:

只出现一次的数字

136. 只出现一次的数字

class Solution:
    def singleNumber(self, nums: List[int]) -> int:
        curr = 0
        for n in nums:
            curr ^= n
        return curr

137. 只出现一次的数字 II

  • 一定要记得a,b轮流更新时用的a,b是旧的还是新的
  • 题解区的卡诺图你还记得吗
class Solution:
    def singleNumber(self, nums: List[int]) -> int:
        a, b = 0, 0
        for n in nums:
            b = (b ^ n) & ~a
            a = (a ^ n) & ~b
        return b

260. 只出现一次的数字 III

  • 分组思想
class Solution:
    def singleNumber(self, nums: List[int]) -> List[int]:
        # div = n1 ^ n2
        div = 0
        for n in nums:
            div ^= n 
        # find the lowest bit where n1 != n2
        h = 1
        while div & h == 0:
            h <<= 1
        # get n1 and n2
        a, b = 0, 0
        for n in nums:
            if n & h == 0:
                a ^= n
            else:
                b ^= n
        return [a, b]

二进制子集

1178. 猜字谜

  • 二进制子集遍历方法:while循环,subset = (subset-1)&fullset。
subset = fullset
while subset:
    ......
    subset = (subset-1) & fullset

338. 比特位计数
核心就在于如何找到一个更小的数,发现两者之间的规律。
有三种动态规划的方法:最低有效位/最高有效位/最高设置位(1位)

几个规律:
正整数 y 是 2 的整数次幂,当且仅当y&(y-1)=0。
y=x&(x−1),则 y 为将 x 的最低设置位从 1 变成 0 之后的数。

相关文章

  • 3、小众运算符の大课堂(一)

    较为简单の位运算符: & 位与运算| 位或运算^ 位异或运算~ 位取反运算 举例: 要做位运算,首先要把数据转...

  • 位运算及其应用

    内容概要: 位运算基本操作 基于位运算的状态压缩 位运算经典应用 位运算解N皇后问题 位运算 符号描述规则&与1&...

  • 位运算及用位运算实现权限控制

    请自行补习位运算相关知识 位运算 位运算示例 权限控制

  • 开发基础随笔之位运算符(Bitwise Operators)

    位运算符,属于算术运算符 按位逻辑运算符: 位移运算符: 位运算符的运算数只能是整数 位移运算符:按位左移 a<<...

  • 强大的位运算符

    位取反运算符 位取反运算符(~)是对所有位的数字进行取反操作位取反运算符.png 位与运算符 位与运算符(&)可以...

  • 位运算

    位运算 1. &:按位与 规律:一假则假任何位上的数和1相&得到的结果还是那个数 2. |:按位或 规律:一真则真...

  • 位运算

    https://leetcode.com/problems/gray-code/description/这个位运算...

  • 位运算

    位运算符比一般的算术运算符速度要快,而且可以实现一些算术运算符不能实现的功能。如果要开发高效率程序,位运算符是必不...

  • 位运算

    1.不用加减乘除做加法 解法:分为三步①各位相加不进位,即先按位异或;②做进位,按位与并左移位;③结果相加,直至没...

  • 位运算

    位运算不仅可以简化某些复杂的操作,而且具有更快的计算速度。典型的应用就是除法,交换两个数值,以及在一个数组中寻找只...

网友评论

      本文标题:位运算

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