Single number II
Problem:
Given an array of integers, every element appears three times except for one. Find the single one.
Note:
Your algorithm should has a linear runtime complexity. Could you implement it without using extra memory?
Ideas:
Hashtable easy to think of
A new idea of bit vector
Others code:
Public classSolution { Public intSinglenumber (int[] A) {/*element in A was 32bit, sum corresponding bits from all elements and mod 3 then should left the Single Number*/ int[] sum=New int[32]; intRes=0; for(inti=0;i<32;i++) { for(intj=0;j<a.length;j++) {Sum[i]+ = ((a[j]>>i) &1);//sum every bit of all numbers} Sum[i]%=3; Res+ = ((sum[i]&1) <<i);//recover The single number } returnRes; }}View Code
The Learning Place:
- This data structure of bit vectors is fantastic.
- Shift right twice times left shift add 0 increase twice times deep left and right shift meanings
- Transformation and recovery method of data
Single number II