Quick actions

cmd+k|ctrl+k

Navigation

Languages

Max Subarr Product

Snippet info

Language

JavaScript

Visibility

public

Author

soham57

Created

2024-04-06T10:14:28.17887Z

Updated

2024-04-06T10:14:28.17887Z

var maxProductSubarray = function(nums) {
    let maxSubarrProd = 0;
    let [currMin, currMax] = [1, 1];
    let start = 0;
    let end = 0;
    let maxStart = 0;
    let maxEnd = 0;

    for(let i = 0; i < nums.length; i++){
        const num = nums[i];
        const temp = num * currMax;

        if (temp < num && i > 0) {
            currMax = num;
            currMin = num;
            start = i;
            end = i;
        } else {
            currMax = Math.max(temp, currMin * num, num);
            currMin = Math.min(temp, currMin * num, num);
            if (currMax === num) {
                start = i;
            }
            end = i;
        }

        if (currMax > maxSubarrProd) {
            maxSubarrProd = currMax;
            maxStart = start;
            maxEnd = end;
        }
    }

    return {
        maxProduct: maxSubarrProd,
        startIndex: maxStart,
        endIndex: maxEnd,
        subarray: nums.slice(maxStart, maxEnd + 1)
    };
};

// Example usage:
const nums = [2, 3, -2, 4];
const result = maxProductSubarray(nums);
console.log(result);
INFO