最大子序列和:Java實現
阿新 • • 發佈:2019-01-31
如果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; }