Viết hàm tìm tích lớn nhất của hai phần tử bất kỳ trong mảng, thời gian tuyến tính, không gian hằng số.
Ví dụ: [3,9,2,1,0] → 27 (3×9). Cần xét cả cặp số âm lớn nhất.
Ví dụ
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));
Kết quả
27