leetcode 53. Maximum Subarray

来源:互联网 发布:js音乐播放器插件 编辑:程序博客网 时间:2024/06/15 18:31

leetcode 53. Maximum Subarray


动态规划方法:

public class Solution {    public int maxSubArray(int[] nums) {    // dp    int len = nums.length;    int[] dp = new int[len];    dp[0] = nums[0];    int max =  nums[0];    for(int i=1;i<len;i++){    if(dp[i-1]<0){    dp[i] = nums[i];    }else{    dp[i] = dp[i-1] + nums[i];    }    if(max<dp[i]){    max = dp[i];    }    }    return max;    }}

动态规划应该是最常用的算法设计方法,脑海中应时常有这样的模板在,一个程式在一步一步间变化的规律,将其拆分成几种简单地形式,比如这一题中,最长子串和问题,前n个子串,含第n个最大子串和  与 上一步的关系为:

Max(n) =  Max(n-1)<0:0:Max(n-1) + nums[n],  遍历一遍n,更新max,既可以求得正确的解。

原创粉丝点击