Maximum Subarray

Problem

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

Example 1:

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

Example 2:

Input: nums = [1]
Output: 1
Explanation: The subarray [1] has the largest sum 1.

Example 3:

Input: nums = [5,4,-1,7,8]
Output: 23
Explanation: The subarray [5,4,-1,7,8] has the largest sum 23.

Constraints:

  • 1 <= nums.length <= 105
  • -104 <= nums[i] <= 104

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

Solution

Maybe I just really don’t understand what dynamic programming is.

class Solution {
    public int maxSubArray(int[] nums) {
        var curr = 0;
        var max = Integer.MIN_VALUE;

        for (var i : nums) {
            curr += i;
            max = Math.max(curr, max);
            if (curr < 0) {
                curr = 0;
            }
        }

        return max;
    }
}

Recent posts from blogs that I like

Commemorating the bicentenary of the death of Jacques-Louis David 2: Revolutionary

Among the leaders of the French Revolution, he was almost guillotined alongside Robespierre, but got on well with Napoleon, and was even offered the post of court painter to King Louis XVIII.

via The Eclectic Light Company

Merry Christmas, Ya Filthy Animals (2025)

It’s my last day of writing for the year, so I’m going to try keep this one quick – it was knocked out over three hours, so I hope you can forgive me if it’s a bit clumsier than my usual writing. For some strange reason, one of the few clear memories I have from growing up in Malaysia is a particula...

via Ludicity

How Rob Pike got spammed with an AI slop "act of kindness"

via Simon Willison