/**
* FindMaxSumSubArray.java
*/
package Algorithm;
import org.junit.Test;
/**
* @Author: chenxiaoyu
* @Date: 2013-8-2下午5:26:30
* @Description: 输入一个整形数组,数组里有正数也有负数。
数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。
求所有子数组的和的最大值。要求时间复杂度为O(n)。
*/
public class FindMaxSumSubArray {
static int[] array = new int[]{1,2,-4,6,-3,8,-9,0};
static int MaxIndex = array.length - 1;
@Test
public void test(){
int max = array[0];
int sum = 0;
for (int i=0; i<=MaxIndex; i++){
if(sum >= 0){
sum += array[i];
}else{
sum = array[i];
}
if(sum > max){
max = sum;
}
}
System.out.println(max);
}
}