代码
public class Max {
private static int max ( int [] a ) {
int sum = 0, thisSum = 0;
for ( int i = 0; i < a.length-1; i++ ) {
thisSum += a[i];
if ( thisSum > sum )
sum = thisSum;
else if ( thisSum < 0 )
thisSum = 0;
}
return sum;
}
//测试
public static void main( String [] args) {
int [] a = { 4, -3, 5, -2, -1, 2, 6, -2};
System.out.println( max(a) );
}
}
输出
11
简要分析
联机算法正确性不易看出,也难开发。
但仅需常量空间并以线性时间运算。