求一個整數陣列的連續子陣列的最大和.
阿新 • • 發佈:2019-01-27
/**
思路:時間複雜度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); } }