位运算
May 5, 2024Less than 1 minute
相关链接
两个数字异或的结果 a
是将 a 和 b 的二进制每一位进行运算,得出的数字。 运算的逻辑是果同一位的数字相同则为 0,不同则为 1
异或的规律
- 任何数和本身异或则为
0
- 任何数和 0 异或是
本身
- 异或运算满足交换律,
136. 只出现一次的数字 - 力扣(LeetCode) 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
感觉没必要学习位运算...