給定一個數組,找出這個和最大的連續子陣列的和
阿新 • • 發佈:2019-01-25
將這個連續子陣列分為兩部分,一個是字首,一個是後一個元素,要使這個連續子陣列最大,那麼它的字首肯定不能為負,不然這個字首對即將加上的值就無意義,用一個max記錄最大值,每次當前綴加上後一個元素的時候判斷和是否大於max,大於則更新max,再判斷和是否小於0,小於0則將字首更新為0,繼續加下一個元素,依次類推,直到陣列末尾,max即為最大子陣列和。程式碼如下:
public class Solution { public int FindGreatestSumOfSubArray(int[] array) { if(array.length==0){ return 0; } int max = array[0]; int current = array[0]; for(int i=1;i<array.length;i++){ current += array[i]; if(current>max){ max = current; }else if(current<0){ current = 0; } } return max; } }