设元素中除了某个孤立数外,其他数都出现过且只出现过N次,解题方法如下:
- 如果N为偶数,那么直接将每个元素异或后的结果即是最终结果
- 如果N为奇数,我们可以依次判断每一位为1还是为0
本题代码如下:
//
// Created by jt on 2020/9/6.
//
class Solution {
public:
/**
*
* @param A int整型一维数组
* @param n int A数组长度
* @return int整型
*/
int singleNumber(int* A, int n) {
// write code here
if (n < 1) return -1;
int res = 0;
for (int i = 0; i < 32; ++i) {
// 判断每一位是1还是0
int bit = 0;
for (int j = 0; j < n; ++j) {
bit += (A[j] >> i) & 1;
}
res += (bit % 3) << i;
}
return res;
}
};
京公网安备 11010502036488号