Find the odd int


Given an array, find the int that appears an odd number of times.

There will always be only one integer that appears an odd number of times.

배열이 주어지면, 배열 내 홀수 갯수 만큼 있는 요소를 반환하는 문제입니다.

function findOdd(A) {
  var count = {};

  A.forEach(cur => (count[cur] ? (count[cur] += 1) : (count[cur] = 1)));

  for (let key in count) {
    if (count.hasOwnProperty(key)) {
      if (count[key] % 2 !== 0) {
        return Number(key);
      }
    }
  }
}

iteration을 한 번 돌면서 배열의 요소 갯수를 카운트했습니다. 이후 for in 문으로 갯수가 홀수인 요소를 반환했습니다.

다른 풀이들도 저의 풀이와 비슷했지만, 아래의 풀이는 비트단위 연산자를 사용해 풀이를 해서 참고차 가져왔습니다.

function findOdd(A) {
  return A.reduce(function(c, v) {
    return c ^ v;
  }, 0);
}