面試題56 II 陣列中數字出現的次數 II

2022-09-13 08:27:08 字數 1003 閱讀 8449

題目:

解答:

方法一:雜湊

class

solution

//雜湊表儲存數和其出現次數

std::unordered_mapunorderedmap;

for (int

num : nums)

//遍歷雜湊表

for(auto iter : unorderedmap)

}return0;

}};

方法二:異或

/** 位運算 o(n) o(1)

** 如果乙個數字出現三次,則它二進位制表示的每一位也出現三次。

* 如果把所有出現三次的數字的二進位制表示的每一位都分別加起來,則每一位的和都能被3整除。

* 將陣列中的所有數字的二進位制表示的每一位都加起來。如果某一位的和能被3整除,

* 則只出現一次數字的二進位制表示中對應的那一位是0,否則就是1。

* */

1

class

solution 910

int ans = 0;11

//儲存所有數字二進位制表示的每一位的和

12int bitsum[32] = ;

13//

該位是0或1

14int bit = 0;15

16//

遍歷陣列中的數

17for (int

num : nums)

1831

32//

將掩碼的1左移,接著計算右起開始的下一位

33 bitmask <<= 1;34

}35}36

37//

遍歷二進位制每一位和的陣列,從高位開始

38for (int

b : bitsum)

3947

48return

ans;49}

50 };

面試題56 II 陣列中數字出現的次數

題目 在乙個陣列 nums 中除乙個數字只出現一次之外,其他數字都出現了三次。請找出那個只出現一次的數字。示例 示例 1 輸入 nums 3,4,3,3 輸出 4 示例 2 輸入 nums 9,1,7,9,7,9,7 輸出 1 這個題目和 力扣 136.只出現一次的數字,面試題56 i.陣列中數字出...

面試題56 陣列中數字出現的次數

題目一 乙個整型陣列裡除了兩個數字之外,其他的數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。異或的基本性質 2個相同的數異或等於0,且異或操作 滿足結合律和交換律。首先 乙個整型陣列裡除了1個數字之外,其他的數字都出現了兩次。請寫程式找出這個只出現一次的數字。找出陣列中只出現一次的數 num...

面試題56 陣列中數字出現的次數

陣列中只出現一次的兩個數字。乙個整型陣列裡除兩個數字之外,其他數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。要求時間複雜度o n 空間複雜度o 1 例如,輸入陣列,因為只有4和6只出現了一次,其他數字出現了兩次,所以輸出4和6。先考慮這樣乙個問題,如果這個陣列中,只有乙個陣列出現1次,其餘數...