給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現了三次。找出那個只出現了一次的元素。
說明:
你的演算法應該具有線性時間複雜度。 你可以不使用額外空間來實現嗎?
示例 1
:輸入:[2
,2,3
,2]輸出:
3示例 2
:輸入:[0
,1,0
,1,0
,1,99
]輸出:
99
以例項1進行講解,[2,2,3,2]的二進位制表示形式為[10, 10, 11, 10]。
我們從低位向高位看,最低位的四個數字分別是0,0,1,0. 由於陣列中只有乙個數字出現乙個,其餘數字都出現了三次。因此最後一位的相加結果必定是3n(當單獨的數字最後一位是0時,結果是3n)或者3n+1(當單獨的數字最後一位是1時,結果是3n+1).我們將結果%3後就能知道單獨的數字在最後一位是0還是1.
以此類推,第二位的四個數字分別是1,1,1,1。相加後結果為4,4%3=1,表示單獨的數字第二位上是1.判斷完全部32位後,就可知道單獨的數字二進位制形式在每一位上的表示。
class
solution
}// 如果所有數字在該位上的總和%3之後不為0
// 表示單獨的數字的二進位制形式在該位置上是1if(
(tmp %3)
!=0)}
return res;}}
;
Leetcode137 只出現一次的數字
題目描述 給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現了三次。找出那個只出現了一次的元素。說明 你的演算法應該具有線性時間複雜度。你可以不使用額外空間來實現嗎?示例 1 輸入 2,2,3,2 輸出 3 示例 2 輸入 0,1,0,1,0,1,99 輸出 99 思路 對數字中數...
leetcode 137 只出現一次的數字 II
給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現了三次。找出那個只出現了一次的元素。說明 你的演算法應該具有線性時間複雜度。你可以不使用額外空間來實現嗎?這種純數字計算的問題,如果我們只用加減乘除就能做出來,那leetcode就太low了,這種問題,應該深入到位級別運算。思考,將...
leetcode137 只出現一次的數字詳解
原題連線 給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現了三次。找出那個只出現了一次的元素。說明 你的演算法應該具有線性時間複雜度。你可以不使用額外空間來實現嗎?示例 1 輸入 2,2,3,2 輸出 3 示例 2 輸入 0,1,0,1,0,1,99 輸出 99 3 函式f實現的...