题目描述
给定一个整形数组,有正数也有负数,数组中连续一个或多个组成一个子数组,求所有子数组的和的最大值,要求时间复杂度为O(n);
package dynamicProgramming;
public class MyFindGreatestSumOfSubArray {
public int FindGreatestSumOfSubArray(int[] array) {
int len = array.length;
int res = array[0];
int tempSum = array[0];
for (int i = 1;i < len;i++) {
if (tempSum < 0) {
tempSum = array[i];
} else{
tempSum += array[i];
}
if (tempSum > res) {
res = tempSum;
}
}
return res;
}
public static void main(String[] args) {
int[] array = {6,-3,-2,7,-15,1,2,2};
MyFindGreatestSumOfSubArray m = new MyFindGreatestSumOfSubArray();
System.out.println(m.FindGreatestSumOfSubArray(array));
}
}