## DEV Community is a community of 891,295 amazing developers

We're a place where coders share, stay up-to-date and grow their careers.

# Find The Parity Outlier

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)
``````

Sample Tests

``````test.assert_equals(find_outlier([2, 4, 6, 8, 10, 3]), 3)
test.assert_equals(find_outlier([2, 4, 0, 100, 4, 11, 2602, 36]), 11)
test.assert_equals(find_outlier([160, 3, 1719, 19, 11, 13, -21]), 160)
``````

Solution- ###Python

``````def find_outlier(integers):
even=[]
odd=[]
for i in integers:
if i % 2 == 0:
even.append(i)
else:
odd.append(i)
if len(even)==1:
return even
else:
return odd
``````

## Discussion (1) In principle (subject to edge case below), how about:

``````def find_outlier(integers):
remainder = integers % 2
for i in integers:
if i % 2 != remainder:
return i
``````

This will, however, not handle the edge case where the outlier is the first item in the array. So...

``````def find_outlier(integers):
test = integers[0:3]
triple = sum(map(lambda x: x % 2, test))
if triple % 3: # outlier in first 3
remainder = 1 - triple % 2
else:
remainder = triple % 2
test = integers[3:]
for i in test:
if i % 2 != remainder:
return i
``````