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

Xây dựng mảng sản phẩm trong JavaScript

Chúng tôi được yêu cầu viết một hàm JavaScript có trong một mảng Số. Hàm sẽ tạo một mảng mới dựa trên mảng ban đầu. Mỗi phần tử tương ứng của mảng mới phải là tích của tất cả các phần tử của mảng ban đầu bao gồm cả phần tử đó.

Ví dụ -

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

const arr = [1, 2, 3, 4, 5];

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

const output = [120, 60, 40, 30, 24];

Chúng ta phải đạt được điều này trong thời gian tuyến tính và không gian không đổi (rõ ràng là loại trừ không gian được sử dụng hết trong việc xây dựng mảng mới).

Ví dụ

Sau đây là mã -

const arr = [1, 2, 3, 4, 5];
const exclusiveProduct = (arr = []) => {
   // O(n) time complexity
   const product = arr.reduce((acc, val) => acc * val);
   const res = [];
   // O(n) time complexity
   for(let i = 0; i < arr.length; i++){
      const el = arr[i];
      res[i] = product / el;
   };
   return res;
};
console.log(exclusiveProduct(arr));

Đầu ra

Sau đây là kết quả trên bảng điều khiển -

[120, 60, 40, 30, 24]