DEV Community

Mahesh
Mahesh

Posted on

maxSubArraySum in Javascript

We need to find the contiguous subarray sum which has the largest sum.

Example:

_

Input: nums = [-2,1,-3,4,-1,2,1,-5,4]
Output: 6
Explanation: [4,-1,2,1] has the largest sum = 6.
_

Here is the code:

function maxSubArray(nums) {
    let max = -Infinity;
    let sum = 0;
    for (let i = 0; i < nums.length; i++) {
        sum = sum + nums[i];
        if (max < sum) max = sum;
        if (sum < 0) sum = 0;
    }
    return max;
};
Enter fullscreen mode Exit fullscreen mode

Please provide any simplified solution you have.

Thanks.

Discussion (3)

Collapse
lukeshiru profile image
Luke Shiru

Alternative approach making use of the functions available in JavaScript:

const maxSubArray = numbers =>
    Math.max(
        ...numbers.reduce(
            (sums, number) => sums.concat(Math.max(0, sums.at(-1) + number)),
            [0],
        ),
    );
Enter fullscreen mode Exit fullscreen mode

Cheers!

Collapse
rajeshroyal profile image
Rajesh Royal

I see you are a big fan of reduce. This functional is pretty powerful.

Collapse
lukeshiru profile image
Luke Shiru

Not a fan of reduce, it just makes sense for this. For stuff like this, sums and multiplications, is better to use reduce.