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?
解题思路,参看http://www.cnblogs.com/changchengxiao/p/3413294.html
class Solution { public: int singleNumber(int A[], int n) { // IMPORTANT: Please reset any member data you declared, as // the same Solution instance will be reused for each test case. int sum[32], ans = 0; for(int i = 0;i < 32;i++) { sum[i] = 0; for(int j = 0;j < n;j++) if((A[j] >> i) & 1 == 1) sum[i] = (1 + sum[i]) % 3; ans = ans | (sum[i] << i); } return ans; } };