您當前的位置:首頁 > 詩詞

劍指 Offer 56 - II. 陣列中數字出現的次數 II

作者:由 櫻黯雨 發表于 詩詞時間:2021-07-06

題目描述

在一個數組 nums 中除一個數字只出現一次之外,其他數字都出現了三次。請找出那個只出現一次的數字。

示例 1:

輸入:nums = [3,4,3,3]

輸出:4

示例 2:

輸入:nums = [9,1,7,9,7,9,7]

輸出:1

解題思路1: Map法

示例程式碼: 略

解題思路2: 位運演算法

K神題解

1。 我們將每個數都變成二進位制位, 將每個二進位制位的1/0進行相加儲存起來

2。 將每個二進位制位的和對3取餘, 那麼所有出現三次的二進位制位就會變成0

3。 剩下的為1的二進位制位所組成的數就是出現一次的數

K神是用二進位制實現自動狀態機來處理每個二進位制位, 實力有限, 我是直接實現了這個過程。。。

示例程式碼:

def

singleNumber

self

nums

List

int

])

->

int

bits

=

0

*

34

# 宣告一個數組用來儲存二進位制位的和

for

n

in

nums

bstr

=

str

bin

n

))

lstr

=

len

bstr

for

i

in

range

2

lstr

):

# 迴圈對每個二進位制位進行相加

bits

-

lstr

-

i

)]

+=

int

bstr

i

])

bitStr

=

“0”

for

i

in

range

2

len

bits

)):

bits

i

=

bits

i

%

3

# 對3取餘

bitStr

+=

str

bits

i

])

return

int

bitStr

2

標簽: 二進位制位  bits  示例  nums  int