Problem
Given an array of integers, every element appears three times except for one. Find that single one.
Java Solution
This problem is similar to Single Number.
public int singleNumber(int[] A) { int ones = 0, twos = 0, threes = 0; for (int i = 0; i < A.length; i++) { twos |= ones & A[i]; ones ^= A[i]; threes = ones & twos; ones &= ~threes; twos &= ~threes; } return ones; } |
see above
#Given an array of integers, every element appears three times except for one. Find that single one.
=====
not clear. ‘single one’ can be 1 ,2 or any number over3???
lets say all 3times, and single 1time
#1 xor elements. it will each one once 111 222 333 4 -> 1 2 3 4
#2 sum all elements:
#3 deduct from 2step sum of step1, 3 times,thus on exit it is -8
——–
lets say all 3times, single one is twice.
same only on step #1 it is all w/out 4
so, after same stesp, it is 8 in the end,.
NOT SURE IF NUMBER occur any number >3 ???
so we have 333 111 222 44,
#1 xor all those give up : ‘3 1 2 ‘ xor twice make it 0.
#2 sum all those 33 111 222 44
#3 deduct 3times 3 2 1 from step2
we have only 44. divide 2 vuala!!
done in loop..i guess.
is is as solution???????
public int singleNumber(int[] A){
List list=Arrays.stream(A).boxed().collect(Collectors.toList());
int number=0;
for(int i=0;i<A.length;i++){
if(Collections.frequency(list, A[i])==1){
number=A[i];
}
}
return number;
}
http://www.geeksforgeeks.org/find-the-element-that-appears-once/
Explanation – http://www.careercup.com/question?id=15066700
can you provide the explanation. Looks complicated.