Leetcode-single number II
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?
classSolution { Public: intSinglenumber (vector<int>&nums) { intres =0; intn[ +]={0}; for(inti =0; I < nums.size (); i++){ for(intj =0; J < +; J + +) {N[j]+ = (nums[i]>>j) &1; } } for(intj =0; J < +; J + +) {res|= (n[j]%3) <<J; } returnRes; }};
Use a 32-dimensional array to store the number of occurrences on each of the 1, and finally the number of each of the 3 to the remainder, for the number to be the number on that,
For example, the 5th place gets 21, except 3 to take the remainder 0, indicating that the number to be asked in the 5th place is 0
Finally, the number can be recovered.
Complexity of Time: O (32*n)
http://blog.csdn.net/jiadebin890724/article/details/23306837
Leetcode-single number II