1. 程式人生 > >最大子序列和:Java實現

最大子序列和:Java實現

如果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;
    }