一个正负数组,求其最大的连续子串和
public class TestMaxSum {
/**
* 一法:O(n*n*n)
* @param a
* @return
*/
public static int maxSum(int[] a){
int maxNum = 0;
int sum = 0;
for(int i=0; i<a.length; i++){
for(int j=i; j<a.length; j++){
for(int k=i; k<=j; k++)
sum += a[k];
if(maxNum < sum)
maxNum = sum;
sum = 0;
}
}
return maxNum;
}
/**
* 二法:O(n)
* @param a
* @return
*/
public static int maxSum2(int[] a){
int max = a[0];
int sum = 0;
for(int i=0; i<a.length; i++){
if(sum >= 0)
sum += a[i];
else
sum = a[i];
if(sum > max)
max = sum;
}
return max;
}
public static void main(String[] args) {
int[] a = {1,-2,3,10,-4,7,2,-5};
System.out.println(TestMaxSum.maxSum2(a));
}
}
借鉴:http://blog.csdn.net/jackson__qi/article/details/8045338