天天看點

LeetCode#136. 隻出現一次的數字

136.

給你一個 非空 整數數組 nums ,除了某個元素隻出現一次以外,其餘每個元素均出現兩次。找出那個隻出現了一次的元素。

你必須設計并實作線性時間複雜度的算法來解決此問題,且該算法隻使用常量額外空間。

來源:力扣(LeetCode)

連結:力扣

LeetCode#136. 隻出現一次的數字

https://leetcode.cn/problems/single-number/開始審題不清楚,自己又構造了一個清單,解出了這道題。

class Solution:
    def singleNumber(self, nums: List[int]) -> int:
        nums2=2*list(set(nums))
        nums.sort()
        nums2.sort()
        i=0
        j=0
        while i<len(nums) and j<len(nums2):
            if nums2[j] != nums[i]:
                return nums2[j]
            elif i==len(nums)-1:
                return nums[i]
            else:
                i+=1
                j+=1
           

題目要求隻使用常量額外空間,考慮異或運算。

i ^ 0 = i

i ^ i = 0

class Solution:
    def singleNumber(self, nums: List[int]) -> int:
        a=0
        for i in nums:
            a=a^i
        return a