題目:
解答:
方法一:雜湊
classsolution
//雜湊表儲存數和其出現次數
std::unordered_mapunorderedmap;
for (int
num : nums)
//遍歷雜湊表
for(auto iter : unorderedmap)
}return0;
}};
方法二:異或
/** 位運算 o(n) o(1)
** 如果乙個數字出現三次,則它二進位制表示的每一位也出現三次。
* 如果把所有出現三次的數字的二進位制表示的每一位都分別加起來,則每一位的和都能被3整除。
* 將陣列中的所有數字的二進位制表示的每一位都加起來。如果某一位的和能被3整除,
* 則只出現一次數字的二進位制表示中對應的那一位是0,否則就是1。
* */
1class
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次,其餘數...