CodeWars 6kyu. Find The Parity Outlier

2019년에 Hexo 블로그에 쓴 글을 옮겨 왔습니다. 당시 이해를 그대로 두었습니다.

CodeWars 6kyu. Find The Parity Outlier

Find one odd / even number in last all even / odd numbers.

You are given an array (which will have a length of at least 3, but could be very large) containing integers. The array is either entirely comprised of odd integers or entirely comprised of even integers except for a single integer N. Write a method that takes the array as an argument and returns this “outlier” N.

Examples

[2, 4, 0, 100, 4, 11, 2602, 36]
Should return: 11 (the only odd number)

[160, 3, 1719, 19, 11, 13, -21]
Should return: 160 (the only even number)

First Solution

Solution1 submit

function findOutlier(integers){
  var isOdd = true;
  if (integers[0]%2 == 0){
    // even
    if (integers[1]%2 == 0){
      // even even
      isOdd = false;
    } else{
      // even odd
      if(integers[2]%2 ==0){
        // if even odd even, return odd
        return integers[1];
      } else{
        // else if even odd odd, return even
        return integers[0];
      }
    }
  } else{
    // odd
    if (integers[1]%2 == 0){
      // odd even
      if (integers[2]%2 == 0){
        // if odd even even, return odd
        return integers[0];
      } else{
        // if odd even odd, return even
        return integers[1];
      }
    }
  }
  
  if(isOdd == true){
    for(var i=2; i<integers.length; i++){
      if(integers[i]%2 == 0) return integers[i];
    }
  } else{
    for(var i=2; i<integers.length; i++){
        if(integers[i]%2 != 0) return integers[i];
      }
  }
}

Second Solution

Solution2 submit

function findOutlier(integers){
  var even = integers.filter(a=>a%2==0);
  var odd = integers.filter(a=>a%2!=0);
  
  return even.length == 1 ? Number(even) : Number(odd);
}