求一个整数数组的连续子数组的最大和.

来源:互联网 发布:淘宝网男士皮欧上衣 编辑:程序博客网 时间:2024/05/29 13:56
/**
思路:时间复杂度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);}}

                                             
0 0
原创粉丝点击