เราต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของจำนวนเต็มเป็นอาร์กิวเมนต์เดียว ฟังก์ชันต้องหาผลคูณสูงสุดที่ได้จากการคูณสองสมาชิกใดๆ ในอาร์เรย์ โดยต้องทำในเวลาเชิงเส้นและพื้นที่คงที่
ตัวอย่าง
ถ้าอาร์เรย์นำเข้าคือ:
const arr = [3, 9, 2, 1, 0];
ผลลัพธ์ควรเป็น:
const output = 27;
เพราะ 27 เป็นผลคูณมากที่สุด ได้จาก 3 × 9
ตัวอย่างโค้ด
const arr = [3, 9, 2, 1, 0];
const maxPairProduct = (arr = []) => {
let c = Infinity, d = c;
let a = -Infinity - 1, b = a;
for (const n of arr) {
if(n >= a) {
b = a;
a = n;
} else if(n >= b) {
b = n;
}
if(n <= d) {
c = d;
d = n;
} else if(n <= c) {
c = n;
}
}
return Math.max(a * b, c * d);
};
console.log(maxPairProduct(arr));
ผลลัพธ์
27