From 20e719bebbcd2e992bf0ae5aa9e6672df3b11a07 Mon Sep 17 00:00:00 2001 From: Vasily Guzov Date: Sun, 13 Oct 2024 17:54:24 +0300 Subject: [PATCH] [6kyu][algorithms][my-solution] Find The Parity Outlier solution 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. --- lib/findOUtlier/findOUtlier.ts | 43 +++++++++++++++++++++++++++++++--- 1 file changed, 40 insertions(+), 3 deletions(-) diff --git a/lib/findOUtlier/findOUtlier.ts b/lib/findOUtlier/findOUtlier.ts index 83bffc1..e5685b4 100644 --- a/lib/findOUtlier/findOUtlier.ts +++ b/lib/findOUtlier/findOUtlier.ts @@ -10,10 +10,47 @@ // +// export function findOUtlier(integers: number[]): number { + +// const isEvenNum = integers.filter(num => num % 2 == 0); +// const isOddNum = integers.filter(num => num % 2 != 0); + +// return isEvenNum.length == 1 ? Number(isEvenNum) : Number(isOddNum); +// }; + export function findOUtlier(integers: number[]): number { + const evenNum: number[] = []; + const oddNum: number[] = []; + const middle = Math.trunc(integers.length / 2); + let end = integers.length - 1; + let start = 0; + + while (start < middle || end >= middle) { + + if (start !== middle) { + if (!(integers[start] % 2)) { + evenNum.push(integers[start]) + } else { + oddNum.push(integers[start]) + } + } - const isEvenNum = integers.filter(num => num % 2 == 0); - const isOddNum = integers.filter(num => num % 2 != 0); - return isEvenNum.length == 1 ? Number(isEvenNum) : Number(isOddNum); + if (!(integers[end] % 2)) { + evenNum.push(integers[end]) + } else { + oddNum.push(integers[end]) + } + + if (evenNum.length === 1 && oddNum.length > 1 || oddNum.length === 1 && evenNum.length > 1) { + break; + } + + start++; + end--; + } + + + return evenNum.length === 1 ? evenNum[0] : oddNum[0]; }; +