1. 程式人生 > >求一個整數陣列的連續子陣列的最大和.

求一個整數陣列的連續子陣列的最大和.

/**
思路:時間複雜度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);
	}
}