LeetCode刷題 只出現一次的數字 妙解

2022-05-10 15:18:02 字數 509 閱讀 1288

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

經典的位運算

這道題目已經廣為流傳了,掃瞄陣列,使用異或運算,最終的結果即是答案。

至於為什麼異或運算是題解,首先需要了解以下幾點:

什麼是異或運算(xor):1 xor 1 = 0, 0 xor 0 = 0, 1 xor 0 = 1, 0 xor 1 = 1

知道了什麼是異或運算之後,就可以得出任意數字異或其自身等於0的結論。比如數字5,其二進位制是101,那麼就有101 xor 101 = 0

知道了什麼是異或運算之後,就可以得出任意數字異或0等於其本身的結論。

位運算與順序無關,即a xor b = b xor a, a xor b xor a = a xor a xor b = b

因此,對於陣列內只有乙個數字出現了奇數次,其餘數字都是出現偶數次的情況,異或運算剛好完美解決這個問題。

class solution

leetcode刷題 只出現一次的數字

給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。說明 你的演算法應該具有線性時間複雜度。你可以不使用額外空間來實現嗎?示例 1 輸入 2,2,1 輸出 1 示例 2 輸入 4,1,2,1,2 輸出 4 自己的 class solution ret...

LeetCode刷題 136只出現一次的數字

這道題來自於leetcode官方編輯的初級演算法裡面陣列這一類別的題目,這道題目很簡單,本來不打算記錄的,但是這道題的解法我感覺還是挺有意思的,於是還是打算稍微記錄一下,加深印象,以便日後遇到這樣的題目可以想到類似方法。在看這道題之前,先看一下另一道類似的題目 存在重複元素 這道題要求我們判斷陣列中...

LeetCode刷題 136 只出現一次的數字

給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。說明 你的演算法應該具有線性時間複雜度。你可以不使用額外空間來實現嗎?示例 1 輸入 2,2,1 輸出 1 示例 2 輸入 4,1,2,1,2 輸出 4 通過異或運算 兩者相等為0,不等為1.1 1...