You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
1.5 KiB
TypeScript
57 lines
1.5 KiB
TypeScript
// 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.
|
|
//
|
|
//
|
|
// [2, 4, 0, 100, 4, 11, 2602, 36] --> 11 (the only odd number)
|
|
|
|
// [160, 3, 1719, 19, 11, 13, -21] --> 160 (the only even number)
|
|
//
|
|
//
|
|
|
|
|
|
// 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])
|
|
}
|
|
}
|
|
|
|
|
|
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];
|
|
};
|
|
|