在一个数组 nums 中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。

 

示例 1:

输入:nums = [3,4,3,3]
输出:4

示例 2:

输入:nums = [9,1,7,9,7,9,7]
输出:1

 

限制:

  • 1 <= nums.length <= 10000
  • 1 <= nums[i] < 2^31

 

Related Topics
  • 位运算
  • 数组

  • 👍 342
  • 👎 0
  • 凑合,记录下没啥参考意义

    class Solution {
        public int singleNumber(int[] nums) {
            int[] arrCount = new int[32];
            for (int num : nums) {
                int idx = 32;
                while (--idx>=0 && num > 0){
                    arrCount[idx] += num%2;
                    num >>= 1;
                }
            }
            int res = 0;
            for (int count : arrCount) {
                res <<= 1;
                res += count%3;
            }
            return res;
        }
    }