/**
思路:时间复杂度O(n).
1.首先设置两个变量来进行数组元素相机加的传递。sum和b.
2.判断b<0(说明前面的数加起来已经为负数了),将后面a[i]的值给它,这时b进行了个跳跃。
3.如果b不小于0,则继续加上a[i];最后将b和sum进行对比,sum<b的话,将b的值给它,这样sum数组就一直保持着一个最大的状态,而且还随着b的跳跃一直保持着。
<span style="font-family: Arial, Helvetica, sans-serif;">*/</span>
public class Main{
public static void main (String[] args) throws java.lang.Exception{
int[] a = {-10,-2,6,-4,8,-3,-4};
int sum = 0; //当数组全是负数的时候,将sum=a[0]初始化就可以了。
int b = 0;
for(int i = 0 ; i < a.length;i++){
if(b<0)
b=a[i];
else
b+=a[i];
if(sum<b)
sum=b;
}
System.out.println(sum);
}
}