Skip to main content

位运算

番风Less than 1 minute

相关链接

位运算刷题总结 - 力扣(LeetCode)open in new window

两个数字异或的结果 a 是将 a 和 b 的二进制每一位进行运算,得出的数字。 运算的逻辑是果同一位的数字相同则为 0,不同则为 1

异或的规律

  • 任何数和本身异或则为 0
  • 任何数和 0 异或是 本身
  • 异或运算满足交换律,

136. 只出现一次的数字 - 力扣(LeetCode)open in new window easy

这道题的第一想法是 hashmap,用这个很快就能做出来也满足题目要求, 但是看解答才发现了位运算这个概念,于是开学

class Solution:
    def singleNumber(self, nums: List[int]) -> int:
        # dir = {}
        # for i in range(len(nums)):
        #     if nums[i] in dir:
        #         del dir[nums[i]]
        #     else:
        #         dir[nums[i]] = 1
        # for key, value in dir.items():
        #     k = key
        single_num = 0
        for i in range(len(nums)):
            print(single_num)
            single_num = single_num ^ nums[i]
        return single_num

2024-05-05
感觉没必要学习位运算...