You are given an array (which will have a length of at least 3, but could be very large) containing integers. The integers in the array are either entirely odd or entirely even except for a single integer N. Write a method that takes the array as an argument and returns N.
For example: [2, 4, 0, 100, 4, 11, 2602, 36] Should return: 11
My test cases that need to work:
Test.assertEquals(findOutlier([0, 1, 2]), 1)
Test.assertEquals(findOutlier([1, 2, 3]), 2)
Test.assertEquals(findOutlier([2,6,8,10,3]), 3)
Test.assertEquals(findOutlier([0,0,3,0,0]), 3)
Test.assertEquals(findOutlier([1,1,0,1,1]), 0)
My code so far, that doesn't seem to work:
function findOutlier(integers){
    var evens = [];
    var odds = [];
    for (var i = 0; i < integers.length; i++) {
        if (integers[i] % 2) {
            evens.push(integers[i]);
        } else {
            odds.push(integers[i]);
        }
    }
    var elen = evens.length;
    var olen = odds.length
    if (elen > olen) {
        return odds;
    } else {
        return evens;
    }
}
What do I need to change with this code please?
I see 2 possible modification : 1) Return the single value in your array and not all the array
return evens[0];
Change your if to check if the modulo == 0 ( if the remainder = 0 it is an even number)
if ((integers[i] % 2) == 0) 
-
function findOutlier(integers){
   var evens = [];
   var odds = [];
   for (var i = 0; i < integers.length; i++) 
   {
       if ((integers[i] % 2) == 0) 
       {
           evens.push(integers[i]);
       } 
       else 
       {
           odds.push(integers[i]);
       }
   }
   var elen = evens.length;
   var olen = odds.length;
   if (elen > olen)
   {
       return odds[0];
   } 
   else 
   {
       return evens[0];
   }
}
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With