function maxProductPair(arr) {
if (!Array.isArray(arr) || arr.length < 2) {
throw new Error("Array must contain at least two elements.");
}
let max1 = -Infinity, max2 = -Infinity;
let min1 = Infinity, min2 = Infinity;
for (const x of arr) {
// Track two largest values
if (x > max1) {
max2 = max1;
max1 = x;
} else if (x > max2) {
max2 = x;
}
// Track two smallest values
if (x < min1) {
min2 = min1;
min1 = x;
} else if (x < min2) {
min2 = x;
}
}
const prodMax = max1 * max2;
const prodMin = min1 * min2;
return prodMax >= prodMin
? [max1, max2]
: [min1, min2];
}
const arr = [3, 9, 1, 3, 7, 0, 4];
const [a, b] = maxProductPair(arr);
console.log(`Max product pair: ${a}, ${b}`);
/*
run:
Max product pair: 9, 7
*/