思路
1.位运算求解此题;
2.如果把所有出现三次的数字的二进制表示的每一位加起来,那么每一位都能被3整除;
3.如果某一位的和能被3整除,那么只出现一次数字的二进制位中对应的那一位就是0,否则就是1;
4.完结。
代码
public int singleNumber(int[] nums) {int[] bit = new int[32];for(int j=0;j<32;j++){for(int i=0;i<nums.length;i++){int num = nums[i]>>j;bit[j] += num&1;}}int result = 0;for(int i=31;i>=0;i--){result<<=1;result+=bit[i]%3;}return result;}

