02.位运算–异或的用法
练习题:
leetcode 习题 136.
只出现一次的数字
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
尝试使用位运算解决此题。
"""
Input file
example1: [2,2,1]
example2: [4,1,2,1,2]
Output file
result1: 1
result2: 4
"""
class Solution:
def singleNumber(self, nums: List[int]) -> int:
# your code here
解答
异或的规律:
- 任何数与自身异或结果为 0。
- 任何数与 0 异或结果为本身。
代码
class Solution(object):
def singleNumber(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
c = 0
for x in nums:
c ^= x
return c
l1 = [1, 2, 2]
l2 = [4, 1, 2, 1, 2]
s = Solution()
s.singleNumber(l1)
# 1
s.singleNumber(l2)
# 4