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?
求出数组中只出现一次的数,剩下的都是三次。
/** * Created by wangzunwen on 2016/11/14. */ public class singleNumber2 { public int singleNumber(int[] nums) { int result = 0; for( int i = 0;i<32;i++){ int num = 0; for( int j = 0;j<nums.length;j++){ if(( nums[j] >> i &1) == 1 ){ num++; } } num%=3; result+=(num<<i); } return result; } }
public class Solution { public int singleNumber(int[] A) { int n = A.length; int one=0, two=0, three=0; for(int i=0; i<n; i++){ two |= one&A[i]; one^=A[i]; //cout<<one<<endl; three=one&two; one&= ~three; two&= ~three; } return one; } }