只出現一次的數字

2021-09-29 00:16:22 字數 413 閱讀 7911

最近做乙個題,除了某個元素只出現一次以外,其餘每個元素均出現了三次。找出那個只出現了一次的元素。要求 o(n)演算法且不使用額外空間,

想了很久,想到乙個方案,統計每一位的出現次數,比如數字是32位 int 型,那麼統計32個位上 1和0 的出現次數,某個數字出現3次,那麼他的每一位都會出現3次。出現一次的數字某個位只會貢獻1次出現。組合每個位上出現次數不是3的整數倍的值,就知道只出現一次的那個數了。

但這樣會迴圈 32*n 次。最後看了答案,給出了一種只迴圈n次的方案,但這個答案比較晦澀,自己基於這個思想寫了個比較直白的方法

int

singlenumber

(vector<

int>

& nums)

return ones;

}

只出現一次的數字

1.乙個整型陣列,有乙個數字出現一次,其餘數字出現兩次,找出這個只出現一次的數字。解題思路 異或運算性質 兩個相同的數字異或得0,0與乙個數字異或得數字本身,而且異或運算是滿足交換律的 陣列元素按位異或,交換律可以想象成相同的數字參與運算的時候是相鄰的 所有出現兩次的數字異或之後得0,最後剩餘的是0...

只出現一次的數字

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

只出現一次的數字

給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素 例 1,2,2 1 方法一 異或 數字1 數字2 每一位如果相同就為0,不同為1 1 1 0 1 0 1 0 1 1 0 0 0 class solution def singlenumber se...