只出現一次的數字(Python3)不使用額外空間

提出問題:
給定一個非空整數數組,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。要求:你的算法應該具有線性時間複雜度。 你可以不使用額外空間來實現嗎?

解題思路:使用異或運算解決。
異或運算規則: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

時間與空間複雜度:

clipboard.png

題目鏈接:https://leetcode-cn.com/probl...

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章