In a given array, find the first integer that appears an odd number of times. Given that only one integer occurs odd number of times.
One line solution to this is by using the infamous reduce operation of Javascript.
const findOddInt = (arr) => arr.reduce((a, b) => a ^ b);
Always go for functional and tuned solution, reason it being faster ;)
For those who are wondering, ^ is the symbol for XOR. a^a = 0
and 0^a = a
. So, all the numbers that occur even times will get reduced to 0 and the number that occurs odd number of times would remain.
Top comments (2)
Correct me if I misunderstood, but the question is to find the first integer that appears an odd number of times. Wouldn't this solution not work if there are multiple integers appearing an odd number of times?
For instance, findOddInt([1,1,2,2,2,3,3,3]) would return 1 instead of the expected value of 2.
The solution I came up with is:
But even this I still think the problem is somewhat unclear; Should findOddInt([1,2,2,2,1,1]) return '1' because '1' appeared initially before '2', or should it be '2' because it was the first to appear an odd number of times?
Very well done! The question should be changed to only one integer occurs odd number of times