求连续最大子序列和

此博客链接:https://www.cnblogs.com/ping2yingshi/p/13047031.html

求连续最大子序列和

题目链接:https://leetcode-cn.com/problems/contiguous-sequence-lcci/

给定一个整数数组,找出总和最大的连续数列,并返回总和。

示例:

输入: [-2,1,-3,4,-1,2,1,-5,4]
输出: 6
解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。

题解:

         思路:使用动态规划,当前值取决于上次值和本次值的和,判断,代码思路在代码中。

代码如下:

class Solution {
    public int maxSubArray(int[] nums) {
        int[] dp=new int [nums.length];//当前值所求的的最大值
        dp[0]=nums[0];//初始化
        int max=dp[0];//求最大值
        for(int i=1;i<nus.length,i++)
        {
            if(nums[i]>nums[i]+dp[i-1])//如果当前值比前面值加上当前值小,和变小了,说明当前值为负数,则把dp置为当前值
                 dp[i]=nums[i];
            else//如果当前值比前面和加上当前值小,即当前值为正数,和更大,则把当前值加入到dp中
                dp[i]=nums[i]+dp[i-1];
            max=Math.max(max,dp[i]);
        }
        return max;
    }
}

 

posted @ 2020-06-04 22:44  萍2樱释  阅读(182)  评论(0编辑  收藏  举报