DEV Community

Lancelot03
Lancelot03

Posted on

4 2

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)
Enter fullscreen mode Exit fullscreen mode

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)
Enter fullscreen mode Exit fullscreen mode

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[0]
    else:
        return odd[0]
Enter fullscreen mode Exit fullscreen mode

Image of Datadog

Master Mobile Monitoring for iOS Apps

Monitor your app’s health with real-time insights into crash-free rates, start times, and more. Optimize performance and prevent user churn by addressing critical issues like app hangs, and ANRs. Learn how to keep your iOS app running smoothly across all devices by downloading this eBook.

Get The eBook

Top comments (1)

Collapse
 
sophist profile image
Sophist • Edited

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

def find_outlier(integers):
    remainder = integers[0] % 2
    for i in integers:
        if i % 2 != remainder:
            return i
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay