1. 程式人生 > >java之連續子陣列的最大和

java之連續子陣列的最大和

題目:輸入一個整型陣列,數組裡有正數也有負數。陣列中一個或連續的多個整陣列成一個子陣列,求所有子陣列的和的最大值。要求時間複雜度為O(n).

這個解法可以用動態規劃來解。

其程式碼為:

package LinkList;

public class FindMaxSumofSubArrayMain {

	public static int maxSubSum(int[] a) {
		int maxSum = 0, thisSum = 0;
		if (a == null || a.length <= 0)
			return 0;
		for (int i = 0; i < a.length; i++) {
			thisSum += a[i];
			if (thisSum > maxSum)
				maxSum = thisSum;
			else if (thisSum < 0)
				thisSum = 0;
		}
		return maxSum;

	}

	public static void main(String[] args) {
		int a[] = { 1, -2, 3, 10, -4, 7, 2, -5 };
		System.out.println(maxSubSum(a));
	}

}