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

Medium and message: Vast canvases

Venetian walls were too damp for fresco, so their largest painting were made on stretched canvas. Those giants exceed 10 m (33 feet) in their longer dimension, with the largest 22 m (72 feet).

via The Eclectic Light Company

Notes on Pope Leo XIV's encyclical on AI

via Simon Willison

Netherlands Seizes 800 Servers, Arrests 2 for Aiding Cyberattacks

Authorities in the Netherlands have arrested the co-owners of two related Internet hosting companies for operating IT infrastructure used by Russia to carry out cyberattacks, influence operations and disinformation campaigns inside the European Union. The two men were the focus of a 2025 KrebsOnSecu...

via Krebs on Security