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

題目

難度:★☆☆☆☆
類型:數(shù)組

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

說明:

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

示例

示例 1:

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

示例 2:

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

解答

方案1:統(tǒng)計次數(shù)

我們準備一個字典署辉,字典的鍵是列表中出現(xiàn)過的數(shù)字族铆,值是該數(shù)字出現(xiàn)的次數(shù),遍歷數(shù)組統(tǒng)計每個數(shù)字出現(xiàn)的次數(shù)哭尝,最后返回出現(xiàn)過一次的數(shù)字即可哥攘。

class Solution(object):
    def singleNumber(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        count = {}                  # 定義字典
        for num in nums:            # 遍歷數(shù)組
            if num in count:        # 如果字典中存在當前記錄
                count[num] += 1     # 次數(shù) + 1
            else:                   # 否則
                count[num] = 1      # 當前數(shù)加入到字典中,且出現(xiàn)次數(shù)為1
        count = {v: k for k, v in count.items()}    # 字典鍵值交換
        return count[1]             # 返回出現(xiàn)一次的數(shù)字

方案2:列表

準備一個列表材鹦,遍歷數(shù)組逝淹,當前數(shù)字不在列表中時,加入列表桶唐,如果在列表中栅葡,則彈出列表中的該數(shù),則最后只有出現(xiàn)過奇數(shù)次的數(shù)字留在列表中尤泽,返回該數(shù)即可欣簇。

class Solution(object):
    def singleNumber(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        temp = []                   # 定義空列表
        for num in nums:            # 遍歷數(shù)組
            if num in temp:         # 如果列表中存在當前數(shù)
                temp.remove(num)    # 移除
            else:                   # 否則
                temp.append(num)    # 當前數(shù)加入到列表
        return temp[0]              # 返回列表中剩下的數(shù)字

方案3:巧用異或

異或運算有這樣的特性:

  1. 交換律:a ^ b == b ^ a

  2. 相同數(shù)字異或為零:a ^ a == 0

  3. 數(shù)字異或零為該數(shù)字:a ^ 0 == a

根據(jù)以上的三條特性,我們可以得到坯约,如果將數(shù)組中所有數(shù)字用異或符號連接起來熊咽,則出現(xiàn)偶數(shù)次的數(shù)字失效,最終結(jié)果為出現(xiàn)奇數(shù)次的數(shù)字的異或闹丐。

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

或者直接用字符串网棍,內(nèi)存占用多些。

class Solution(object):
    def singleNumber(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        return eval('^'.join(map(str, nums)))

如有疑問或建議妇智,歡迎評論區(qū)留言~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末滥玷,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子巍棱,更是在濱河造成了極大的恐慌惑畴,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件航徙,死亡現(xiàn)場離奇詭異如贷,居然都是意外死亡,警方通過查閱死者的電腦和手機到踏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進店門杠袱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人窝稿,你說我怎么就攤上這事楣富。” “怎么了伴榔?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵纹蝴,是天一觀的道長。 經(jīng)常有香客問我踪少,道長塘安,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任援奢,我火速辦了婚禮兼犯,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘集漾。我一直安慰自己切黔,他們只是感情好,可當我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布帆竹。 她就那樣靜靜地躺著绕娘,像睡著了一般。 火紅的嫁衣襯著肌膚如雪栽连。 梳的紋絲不亂的頭發(fā)上险领,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天,我揣著相機與錄音秒紧,去河邊找鬼绢陌。 笑死,一個胖子當著我的面吹牛熔恢,可吹牛的內(nèi)容都是我干的脐湾。 我是一名探鬼主播,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼叙淌,長吁一口氣:“原來是場噩夢啊……” “哼秤掌!你這毒婦竟也來了愁铺?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤闻鉴,失蹤者是張志新(化名)和其女友劉穎茵乱,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體孟岛,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡瓶竭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了渠羞。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片斤贰。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖次询,靈堂內(nèi)的尸體忽然破棺而出荧恍,到底是詐尸還是另有隱情,我是刑警寧澤渗蟹,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布块饺,位于F島的核電站,受9級特大地震影響雌芽,放射性物質(zhì)發(fā)生泄漏授艰。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一世落、第九天 我趴在偏房一處隱蔽的房頂上張望淮腾。 院中可真熱鬧,春花似錦屉佳、人聲如沸谷朝。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽圆凰。三九已至,卻和暖如春体箕,著一層夾襖步出監(jiān)牢的瞬間专钉,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工累铅, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留跃须,地道東北人。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓娃兽,卻偏偏與公主長得像菇民,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,472評論 2 348

推薦閱讀更多精彩內(nèi)容