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

Mảng con có tích lớn nhất trong JavaScript

Chúng ta cần viết một hàm JavaScript nhận vào một mảng số nguyên (dương và âm) làm đối số đầu tiên và duy nhất. Hàm nên tìm và trả về tích của mảng con nơi tích đạt tối đa.

Ví dụ:

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

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

Thì đầu ra nên là:

const output = 120

vì mảng con có tích lớn nhất là [4, -5, 2, -3]

Ví dụ

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

const arr = [4, -5, 2, -3, 1, -4, 0, -3]; const maxProduct = (arr = []) => {    if (arr.length === 0){       return 0;    };    let max = arr[0],    min = arr[0],    greatest = arr[0];    for (let i = 1; i <= arr.length - 1; i++) {       let tempMax = max * arr[i];       max = Math.max(          arr[i],          Math.max(min * arr[i], max * arr[i])       );       min = Math.min(arr[i], Math.min(min * arr[i], tempMax));       greatest = Math.max(greatest, max);    }    return greatest; }; console.log(maxProduct(arr));

Kết quả

Đầu ra trên console:

120

Giải thích: Maximum Product Subarray (LeetCode 152). Giữ track cả max và min product ending at i vì số âm * min(âm) = max(dương). O(n) time, O(1) space. Reset tại 0.