欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

给定一个整数数组,找出总和最大的连续数列 博客分类: 算法题 最大的连续数列java动态规划 

程序员文章站 2024-03-18 09:25:04
...

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

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

 

示例:

 

输入: [-2,1,-3,4,-1,2,1,-5,4]

输出: 6

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

 

解题:

用变量去记录连续数列总和的最大值。

用另一个变量记录当前位置可累积到的总和,若该值需大于0,否则置为0。(此处就是用了动态规划的思想)

即:f(n)=max(f(n-1)+n,0)

 

 

class Solution {
    public int maxSubArray(int[] nums) {
        if(nums==null || nums.length==0){
            return 0;
        }
        int max=nums[0];
        int dp=0;
        for(int i=0;i<nums.length;i++){
            int tmp=dp+nums[i];
            max=Math.max(tmp,max);
            dp=tmp>0?tmp:0;
        }
        return max;
    }
}