53. 最大子序和

每一步都找到当前元素(自己)的最大子序列
有两种可能

  • 当前元素和前面的子序列和合并
  • 不和前面的合并
    dp数组中存储的的每个值是以当前元素结尾的最大的子序列和
    用一个变量动态的保存最大子序列的值,节省空间。
class Solution {
    public int maxSubArray(int[] nums) {
        int result=nums[0];
        int sum=0;
        for(int i=0;i<nums.length;i++){
            sum=Math.max(nums[i],nums[i]+sum);
            result=Math.max(sum,result);
        }
        return result;
    }
}

js版本

var maxSubArray = function(nums) {
    let result=nums[0];
    let sum=0;
    for(let n of nums){
        sum=Math.max(n,n+sum);
        result=Math.max(result,sum);
    }
    return result;
};

-2,1,-3,4,-1,2
比如,以-3结尾的最大子序列和是-2;
这道题主要是理解动态规划的思想。

上一篇:53.给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。


下一篇:使用Python一步一步地来进行数据分析总结