53 Maximum Subarray

Find the contiguous subarray within an array (containing at least one number) which has the largest sum.

For example, given the array[-2,1,-3,4,-1,2,1,-5,4],
the contiguous subarray[4,-1,2,1]has the largest sum =6.

More practice:

If you have figured out the O(n) solution, try coding another solution using the divide and conquer approach, which is more subtle.

Solution)

Basically, we can use Kadane's algorithm to find the maximum sum subarray by O(n).

The idea is to find the current maximum subarray and then update it.

Then, update global sum.

class Solution {
    public int maxSubArray(int[] nums) {
        if (nums.length == 1) return nums[0];
        int curMax=nums[0], globalMax=nums[0];
        for (int i=1; i < nums.length; i++) {
            curMax = Math.max(nums[i], curMax+nums[i]);
            globalMax = Math.max(curMax, globalMax);
        }
        return globalMax;
    }
}

results matching ""

    No results matching ""