Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Tích lớn nhất của hai số nguyên trong thời gian tuyến tính trong JavaScript


Chúng ta cần viết hàm JavaScript nhận vào mảng số (có cả dương và âm) và trả về tích lớn nhất của hai số chỉ trong một lần duyệt.

Dưới đây là mã:

Ví dụ

const arr = [-1, -3, -4, 2, 0, -5]; const arr2 = [2, 3, 5, 7, -7, 5, 8, -5]; const produce = arr => arr.reduce((acc, val) => acc*val); const maximumProduct = (arr = []) => { const [first] = arr; if(!first){ return 0; }; const creds = arr.reduce((acc, val) => { const { min, max } = acc; if(val > max[0]){ max[1] = max[0]; max[0] = val; return acc; }; if(val < min[0]){ min[1] = min[0]; min[0] = val; return acc; }; if(val > max[1]){ max[1] = val; return acc; }; if(val < min[1]){ min[1] = val; return acc; }; return acc; }, { min: [first, first], max: [first, first] }); const { max, min } = creds; return produce(max) > produce(min) ? produce(max) : produce(min); }; console.log(maximumProduct(arr)); console.log(maximumProduct(arr2));

Kết quả

Đầu ra trong console sẽ là:

20 56