设元素中除了某个孤立数外,其他数都出现过且只出现过N次,解题方法如下:

  1. 如果N为偶数,那么直接将每个元素异或后的结果即是最终结果
  2. 如果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;
    }
};