[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.
This commit is contained in:
@@ -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;
|
||||
|
||||
const isEvenNum = integers.filter(num => num % 2 == 0);
|
||||
const isOddNum = integers.filter(num => num % 2 != 0);
|
||||
while (start < middle || end >= middle) {
|
||||
|
||||
return isEvenNum.length == 1 ? Number(isEvenNum) : Number(isOddNum);
|
||||
if (start !== middle) {
|
||||
if (!(integers[start] % 2)) {
|
||||
evenNum.push(integers[start])
|
||||
} else {
|
||||
oddNum.push(integers[start])
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
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];
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user