整数数组子数组求最大和改进

  昨天在大佬教导下写的方法自己理解错了,不是在数字为负的时候标记为0,是当前这个数和前面求出来的子数组和求和,如果和为负,标记为0,截断,和为正,就加。

  也就是在昨天代码基础上,把条件判断的num[i]变成add[i-1]+num[i],修改后就剩一个为0的时候,无法判断。源代码如下:

public static void main(String[] args ) {
int num[]= {1,2,-1,4,-5,-7,-3,5} ;
int add[]={0,0,0,0,0,0,0,0};
int max;
int i=0;
int length=num.length;
add[0]=num[0];
for(i=1;i<length;i++) {
if(add[i-1]+num[i]<0) {
add[i]=0;
}else {
add[i]=num[i]+add[i-1];
}
}
max=add[0];
for(i=0;i<length-1;i++) {
if(add[i+1]>max) {
max=add[i+1];
}
}
System.out.print(max);
}

 

posted @ 2022-03-12 23:02  听风1234  阅读(27)  评论(0编辑  收藏  举报