leetcode53

来源:互联网 发布:什么是scratch编程 编辑:程序博客网 时间:2024/06/05 08:22

求总和最大的子数组。
动态规划dp。
Suppose we’ve solved the problem for A[1 .. i - 1]; how can we extend that to A[1 .. i]? The maximum
sum in the first I elements is either the maximum sum in the first i - 1 elements (which we’ll call MaxSoFar), or it is that of a subvector that ends in position i (which we’ll call MaxEndingHere).

MaxEndingHere is either A[i] plus the previous MaxEndingHere, or just A[i], whichever is larger.

public class Solution {    public int maxSubArray(int[] nums) {        int maxSoFar = nums[0], maxEndingHere = nums[0];        for(int i=1; i<nums.length; i++) {            maxEndingHere = Math.max(maxEndingHere+nums[i], nums[i]);            maxSoFar = Math.max(maxSoFar, maxEndingHere);        }        return maxSoFar;    }}
0 0
原创粉丝点击