leetcode 137 只出現一次的數字 II

2021-10-08 22:05:47 字數 886 閱讀 8367

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實現的...