給定一個(gè)非空整數(shù)數(shù)組,除了某個(gè)元素只出現(xiàn)一次以外,其余每個(gè)元素均出現(xiàn)兩次。找出那個(gè)只出現(xiàn)了一次的元素。
說(shuō)明:
你的算法應(yīng)該具有線性時(shí)間復(fù)雜度。 你可以不使用額外空間來(lái)實(shí)現(xiàn)嗎?
示例 1:
輸入: [2,2,1]
輸出: 1
示例 2:
輸入: [4,1,2,1,2]
輸出: 4
解答
我用循環(huán)的方法,列表,字典都不行,超出時(shí)間的限制。
nums = [1,2,3,1,2,3,4]
alist = set([x for x in nums if nums.count(x) == 1])
for i in alist:
print(i)
直到我看見(jiàn)大佬用異或操作。。。
class Solution(object):
def singleNumber(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
res = 0
for i in nums:
res ^= i
return res
0異或任何數(shù)不變,任何數(shù)與自己異或?yàn)?。
真是厲害,不服不行。