提出問題:
給定一個非空整數數組,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。要求:你的算法應該具有線性時間複雜度。 你可以不使用額外空間來實現嗎?
解題思路:使用異或運算解決。
異或運算規則: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
時間與空間複雜度: