0137. Single Number Ii

137. Single Number ii #

题目 #

给定整数数组 nums,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次。找出并返回只出现了一次的元素。

设计并实现线性时间复杂度的算法来解决此问题,且算法只使用常量额外空间。

思路 #

  • 位数统计

代码 #

class Solution {
    public int singleNumber(int[] nums) {
        int[] count = new int[32];
        for (int num: nums) {
            for (int i = 0; i < 32; i++) {
                if (((num >> i) & 1) == 1) count[i] += 1;
            }
        }
        int ans = 0;
        for (int i = 0; i < 32; i++) {
            if (count[i] % 3 == 1) ans ^= (1 << i);
        }
        return ans;
    }
}

致谢 #

宫水三叶