最大子序列和:Java实现

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/liuzhenya1994/article/details/79965661

如果a[i]是负的,那么它不可能代表最优序列的起点,因为任何包含a[i]作为起点的子序列都可以通过a[i+1]作起点而得到改进。任何负的子序列不可能是最优子序列的前缀。

时间复杂度O(N)的解法:

    public int FindGreatestSumOfSubArray(int[] array) {
        if (array == null || array.length == 0) {
            return Integer.MIN_VALUE;
        }
        int currSum = Integer.MIN_VALUE;
        int maxSum = Integer.MIN_VALUE;
        for (int i = 0; i < array.length; i++) {
            currSum = (currSum < 0) ? array[i] : currSum + array[i];
            if (currSum > maxSum) maxSum = currSum;
        }
        return maxSum;
    }
阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页