leetcode 136. 只出現(xiàn)一次的數(shù)字

給定一個(gè)非空整數(shù)數(shù)組,除了某個(gè)元素只出現(xiàn)一次以外,其余每個(gè)元素均出現(xiàn)兩次。找出那個(gè)只出現(xiàn)了一次的元素。

說明:

你的算法應(yīng)該具有線性時(shí)間復(fù)雜度。 你可以不使用額外空間來實(shí)現(xiàn)嗎?
示例 1:

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

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

思路一
1.新建列表a=[],遍歷原列表
2.原列表元素不在新列表中,則將這個(gè)元素放進(jìn)新列表中
3.若新列表中存在原列表元素,則刪除新列表中的這個(gè)元素
4.返回新列表中的元素 a=[0]

class Solution:
    def singleNumber(self, nums: List[int]) -> int:
        a = []
        for i in nums:
            if i not in a:
                a.append(i)
            else:
                a.remove(i)
        return a[0]

思路二
count()方法直接找到該元素

class Solution:
    def singleNumber(self, nums: List[int]) -> int:
        
        for i in nums:
            if nums.count(i) ==1:
                return i

思路三
利用set()創(chuàng)造一個(gè)無序不重復(fù)的元素集,然后利用原數(shù)組所有元素的和比新的元素集的兩倍少一個(gè)數(shù)的原理

class Solution:
    def singleNumber(self, nums: List[int]) -> int:
        sum1 = 0
        for i in nums:
            sum1 += i
        new_nums = set(nums)
        sum2 = 0
        for i in new_nums:
            sum2 += i
        return sum2*2-sum1
            

思路四
使用python的異或操作,0異或任何數(shù)不變,任何數(shù)與自己異或?yàn)?。a⊕b⊕a=b。異或滿足加法結(jié)合律和交換律。(俺也是看其他大佬的答案才知道還有這東西)這是各位大佬需要的資料

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

各位大哥大姐求個(gè)贊??!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容