美文网首页
连续子数组的最大和

连续子数组的最大和

作者: 赵老拖 | 来源:发表于2022-05-16 09:43 被阅读0次

    描述

    输入一个长度为n的整型数组array,数组中的一个或连续多个整数组成一个子数组,子数组最小长度为1。求所有子数组的和的最大值。


    image.png

    思路:计数组的和,如果发现和小于0 就设置curSum为当前值,如果大于0 继续加

    public class Solution {
        public int FindGreatestSumOfSubArray(int[] array) {
            if(array.length<= 0 ){
                return 0;
            }
            int curSum = 0;
            int maxSum = Integer.MIN_VALUE;
            for(int i = 0;i<array.length;i++){
                if(curSum<0){
                    curSum = array[i];
                }else{
                    curSum += array[i];
                }
                maxSum = maxSum>curSum?maxSum:curSum;
            }
            return maxSum;
        }
    }
    

    也可推出偏移公式 dp[i] = Math.max( dp[i-1]+array[i],array[i]);

    相关文章

      网友评论

          本文标题:连续子数组的最大和

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