Leetcode 54 最大子序列和

link

给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。

class Solution {
    public int maxSubArray(int[] nums) {
        if (nums.length == 0) return 0; //非必要
        int res = nums[0];
        int sum = 0;
        for (int i = 0; i< nums.length; i++){
            if (sum < 0){
                sum = nums[i];
            }
            else{
                sum += nums[i];
            }
            res = Math.max(res, sum);
        }
        return res;
    }
}

用的DP思想,DP中存储在当前下标位置前的最大值,转移方程:
如果加入当前元素后,若前面的sum < 0 则重新开始。

你可能感兴趣的:(leetcode,动态规划)