Given an array of integers, every element appears three times except for one. Find that single one.
使用一个32位数组来记录每一位上1出现的次数,如果没有那个特别的数,这个数组中每个元素应该都是3的倍数,加上这个数以后,哪个元素除不尽3就说明我们要找的这个数在这位上是1
var singleNumber = function(nums) {
var result = 0;
var rec = [];
var n = nums.length;
for(var i=0; i<32; i++){
for(var j=0; j<n; j++){
if (rec[i]===undefined)
rec[i] = 0;
rec[i]+=(nums[j]>>i)&1;
}
result|=(rec[i]%3)<<i;
}
return result;
};