Given an array of integers, every element appears twice except for one. Find that single one.
Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?
我的勉强算法:
class Solution(object):
def singleNumber(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
set = {}
for i in nums:
if i not in set:
set[i] = -1
else:
set[i] = 1
for i in nums:
if set[i] == -1:
return i
看了答案后,完全没有想到,居然可以用XOR来解决这个问题。
对于异或来说:
异或运算是可交换,即 a ^ b = b ^ a
0 ^ a = a
class Solution(object):
def singleNumber(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
result = 0
for i in nums:
result ^= i
return result

本文介绍了一种寻找数组中唯一出现一次的元素的方法。该方法利用异或运算的特点,实现了线性时间复杂度且不使用额外内存的目标。通过对比两种实现方式,展示了如何优化算法。
721

被折叠的 条评论
为什么被折叠?



