137. Single Number II

Given an array of integers, every element appears three times except for one, which appears exactly once. Find that single one.

Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?

含义:数组中每个整数都出现了三次,只有一个出现了一次,找出来

 1     public int singleNumber(int[] nums) {
 2 //        我们可以建立一个32位的数字,来统计每一位上1出现的个数,我们知道如果某一位上为1的话,那么如果该整数出现了三次,对3去余为0,
 3 // 我们把每个数的对应位都加起来对3取余,最终剩下来的那个数就是单独的数字
 4         int res = 0;
 5         for (int i = 0; i < 32; ++i) {
 6             int sum = 0;
 7             for (int j = 0; j < nums.length; ++j) {
 8                 sum += (nums[j] >> i) & 1;
 9             }
10             res |= (sum % 3) << i;
11         }
12         return res;        
13     }
原文地址:https://www.cnblogs.com/wzj4858/p/7727861.html