美文网首页
53. Maximum Subarray

53. Maximum Subarray

作者: 窝火西决 | 来源:发表于2019-06-04 15:06 被阅读0次

    Given an integer array nums, find the contiguous subarray (containing at least one number) which has the largest sum and return its sum.

    Example:

    Input: [-2,1,-3,4,-1,2,1,-5,4],
    Output: 6
    Explanation: [4,-1,2,1] has the largest sum = 6.

    题目

    求数组中连续的几个数加起来最大的和。

    思路

    从第一个开始加,如果第一个数是正数,算一算它加第二个数等于多少,如果第一个数是负数,那就不要第一个数了,从第二个数开始加。如果头两个数的和为正数,那么算一算它加上第三个数是多少,如果头两个数的和是负数,那就从第三个数开始算。以此类推,我们每次都记录一下累加的和,它为正数就继续加,为负数就抛弃,从下一个开始。不过抛弃前先记录一下为正数时的值,最后遍历完了,这个值就是记录的最大值。

    代码

     public int maxSubArray2(int[] nums) {
                int dp=nums[0];//用来计算累加和
                int max=dp;
                for (int i = 1; i < nums.length; i++) {
                    if (dp>0) {
                        dp=dp+nums[i];
                    }else {
                        dp=nums[i];
                    }
                    max=Math.max(dp, max);
                }
                return max;
    
            }
    

    相关文章

      网友评论

          本文标题:53. Maximum Subarray

          本文链接:https://www.haomeiwen.com/subject/mwglxctx.html