1. 程式人生 > >leetcode 136. 只出現一次的數字(python)

leetcode 136. 只出現一次的數字(python)

給定一個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。

說明:

你的演算法應該具有線性時間複雜度。 你可以不使用額外空間來實現嗎?

示例 1:

輸入: [2,2,1]
輸出: 1

示例 2:

輸入: [4,1,2,1,2]
輸出: 4

程式碼一:(超出時間限制)

class Solution(object):
    def singleNumber(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        i = 0
        while i < len(nums)-1 and (nums[i] in nums[:i] + nums[i+1:]):
            i += 1
        return nums[i]

程式碼二:高階用法異或^ 

              0異或任何數不變,任何數與自己異或為0。a⊕b⊕a=b。異或滿足加法結合律和交換律。

class Solution:
    def singleNumber(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        res = 0
        for i in nums:
            res^=i
        return res