問題描述:
輸入一組整數,求出這組數字子序列和中最大值。也就是只要求出最大子序列的和,不必求出最大的那個序列。例如:
序列:-2 11 -4 13 -5 -2,則最大子序列和為20。
序列:-6 2 4 -7 5 3 2 -1 6 -9 10 -2,則最大子序列和為16。
O(n)解法:
public static int maxSubSum(int[] a) { int maxSum = a[0]; int thisSum = 0; for (int j = 0; j < a.length; j++) { thisSum += a[j]; if (thisSum > maxSum) { maxSum = thisSum; } else if (thisSum < 0) { thisSum = 0; } } return maxSum; }