提出问题:
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。要求:你的算法应该具有线性时间复杂度。你可以不使用额外空间来实现吗?
解题思路:使用异或运算解决。
异或运算规则: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
时间与空间复杂度:
题目链接:https://leetcode-cn.com/probl…