Maximum Subarray

Problem

Given an integer array nums, find the subarray which has the largest sum and return its sum.

Example 1:

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

Example 2:

Input: nums = [1]
Output: 1

Example 3:

Input: nums = [5,4,-1,7,8]
Output: 23

Pseudocode

- add up numbers in sequence
 - if previous + current number < previous, retain previous.
 - then compare Math.max(previous, maxSum)

Solution

var maxSubArray = function(nums) {
    let max = - Infinity
    let prev = 0

    for(let i = 0; i < nums.length; i++) {
        let curr = nums[i];

        prev = Math.max(curr, curr + prev)
        max = Math.max(prev, max);
    }

    return max
};

Time and Space Complexity

Time

  • Iterate thorugh nums array - O(N)

  • Total - O(N)

Space

  • Storing summation values, previous and maximum - O(1)

  • Total - O(1)

Last updated