## DEV Community

Divyajyoti Ukirde

Posted on • Updated on

# Easy peasy First Odd Int

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.

Hayden Mankin

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:

``````const findOddInt = (array) => {
return Object.entries(array.reduce((oddMap, element) => {
oddMap[element] ^= true;
return oddMap;
}, {})).find(element => element[1])[0];
}
``````

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?

Divyajyoti Ukirde

Very well done! The question should be changed to only one integer occurs odd number of times