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