提出问题:
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。要求:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?
解题思路:使用异或运算解决。
异或运算规则:1.相同数字进行异或运算结果为0。2. 0与任何数进行异或运算结果为该数字。
比如[4,1,1] 4与1异或为5,5与1异或为4,最终输出4为正确答案。
所以算法先设定最终输出值为0,让输出值与数组中所有元素进行一次异或操作,即可得出最终答案。
代码如下( ̄▽ ̄):
class Solution:
def singleNumber(self, nums: List[int]) -> int:
num = 0
for i in range(len(nums)):
num = num^nums[i]
return num
时间与空间复杂度:
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。