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

/**
思路:时间复杂度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);
	}
}

点赞