Computer >> Máy Tính >  >> Lập trình >> Javascript

Tích tối đa của hai số trong một danh sách các số nguyên trong JavaScript

Chúng tôi được yêu cầu viết một hàm JavaScript lấy một mảng số nguyên làm đối số đầu tiên và duy nhất.

Hàm sẽ tìm tích lớn nhất có thể đạt được khi nhân hai phần tử bất kỳ của mảng. Điều kiện đối với chúng tôi là chúng tôi phải thực hiện điều này trong thời gian tuyến tính và không gian không đổi.

Ví dụ -

Nếu mảng đầu vào là -

const arr = [3, 9, 2, 1, 0];

Sau đó, đầu ra phải là -

const output = 27;

bởi vì đó là sản phẩm tuyệt vời nhất và có thể đạt được bằng cách nhân 3 với 9.

Ví dụ

Sau đây là mã -

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));

Đầu ra

Sau đây là đầu ra của bảng điều khiển -

27