137. 只出現一次的數字 ii
給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現了三次。找出那個只出現了一次的元素。
說明:你的演算法應該具有線性時間複雜度。 你可以不使用額外空間來實現嗎?
示例 1:
輸入: [2,2,3,2]
輸出: 3
示例 2:
輸入: [0,1,0,1,0,1,99]
輸出: 99
使用位運算,每一統計0-31位上面的個數,如果乙個位上的個數不為3,那麼說明這個位上的數是單個存在的,把這些單個存在的數並在一起就可以得到單獨的那個數。
注意我們得到的數可能是負數,負數就是對應的正數+2**32。同理,如果這裡不是出現三次,出現k次,我們就只需要改一下判斷條件就好了。
class
solution
:def
singlenumber
(self, nums: list[
int])-
>
int:
res =
0for i in
range(32
):cnt =
0 mask =
1<< i
for c in nums:
if mask & c !=0:
cnt +=
1if cnt %3!=
0:res |
= mask
return res -2**
32if res >2**
31-1else 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實現的...