只出现一次的数字
Single Number
本机进度仅保存在当前浏览器
题目描述
给你一个非空整数数组 nums,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。要求线性时间、不使用额外空间。
示例:nums = [4, 1, 2, 1, 2],输出 4。
解题思路
- 异或的三条性质是解题核心:x ^ x = 0,x ^ 0 = x,异或满足交换律与结合律。
- 把全部数字异或在一起,成对的元素互相抵消为 0,只剩出现一次的那个。
参考实现
查看参考实现Python · 建议先自行作答
def singleNumber(nums):
# 成对元素异或抵消,剩余即答案
ans = 0
for x in nums:
ans ^= x
return ans