function maxProductPair(nums: number[]): [number, number] {
if (nums.length < 2) {
throw new Error("Need at least two numbers");
}
let max1: number = -Infinity, max2 = -Infinity;
let min1: number = Infinity, min2 = Infinity;
for (const x of nums) {
if (x > max1) {
max2 = max1;
max1 = x;
} else if (x > max2) {
max2 = x;
}
if (x < min1) {
min2 = min1;
min1 = x;
} else if (x < min2) {
min2 = x;
}
}
return max1 * max2 >= min1 * min2
? [max1, max2]
: [min1, min2];
}
const arr: number[] = [0, 9, 5, 6, 7, 8, 1, 2, 4, 3];
console.log(maxProductPair(arr));
/*
run:
[9, 8]
*/