剑指 Offer 42. 连续子数组的最大和


剑指 Offer 42. 连续子数组的最大和

解题思路

最基本的动态规划题目,只要找准dp[i]的含义,那就十分简单

代码

class Solution {
    public int maxSubArray(int[] nums) {
        if(nums.length==0){
            return 0;
        }
        int N=nums.length;
        //dp[i]:以nums[i]结尾的“最大子数组和”,可以对照“最长递增子序列”中dp[i]的定义
        int[] dp=new int[N];
        //base case
        dp[0]=nums[0];

        for(int i=1;i<N;i++){
            //要么自成一派,要么和前面的子数组合并
            dp[i]=Math.max(nums[i],nums[i]+dp[i-1]);
        }
            int res = Integer.MIN_VALUE;
            for (int i = 0; i < dp.length; i++) {
                res = Math.max(res, dp[i]);
            }

            return res;
    }
}

文章作者: fFee-ops
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 fFee-ops !
评论
  目录