Given an array of integers, every element appears?three?times except for one. Find that single one.
Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?
?
public class Solution {
public int singleNumber(int[] nums) {
int[] arr = new int[32];
int res = 0;
for (int i = 0; i < 32; i++) {
for (int j = 0; j < nums.length; j++) {
if (((nums[j]>>i) & 1) != 0) {
arr[i] = (arr[i]+1)%3;
}
}
res |= arr[i]<<i;
}
return res;
}
}
?
原文:http://hcx2013.iteye.com/blog/2220183