灵感来源
- 保持更新,努力学习
- python脚本学习
只出现一次的数字
解题思路
题目要求:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
示例:
- 输入:
[2,2,1]
- 输出:
1
解题方法:使用异或运算(XOR)。异或运算有以下特性:
- 任何数与 0 异或结果为其本身:
a ^ 0 = a
- 任何数与自身异或结果为 0:
a ^ a = 0
- 异或运算满足交换律和结合律:
a ^ b ^ a = (a ^ a) ^ b = 0 ^ b = b
因此,将数组中所有元素依次进行异或运算,最终结果即为只出现一次的元素。
class Solution:
def singleNumber(self, nums: List[int]) -> int:
result = 0
for num in nums:
result ^= num
return result
逐行解释
class Solution:
def singleNumber(self, nums: List[int]) -> int:
result = 0 # 初始化结果变量为0,因为任何数异或0都等于它本身
for num in nums: # 遍历数组中的每个元素
result ^= num # 异或运算:相同数字抵消,最终剩下只出现一次的数
return result # 返回结果