代码如下,最简,时间复杂度为O(n)
public class MaxSumOfSub {
/**
* @param args
*/
//int a[]={1,-2,3,10,-4,7,2,-5};
//int a[]={-5,2,7,-4,10,3,-2,1};
public static void main(String[] args) {
// TODO Auto-generated method stub
//int a[]={-2,5,3,-6,4,-8,6};
int a[]={-5,-2,-7,-4,-10,-3,-2,-1};
System.out.println(subMaxSubArray(a));
}
private static int subMaxSubArray(int[] a) {
// TODO Auto-generated method stub
if(a==null) return -1000;
int maxStart=a[0];
int maxAll=a[0];
for(int i=1;i<a.length;i++)
{
maxStart=max(maxStart+a[i],a[i]);
maxAll=max(maxAll,maxStart);
}
return maxAll;
}
private static int max(int i, int j) {
// TODO Auto-generated method stub
return i>j? i:j;
}
}