劍指office--31. 連續子陣列的最大和

ATPX__4869發表於2020-12-27

題目描述:輸入一個整型陣列,陣列中有正數也有負數,陣列中一個或連續的多個整陣列成一個子陣列,求連續子陣列的最大和
(菜鳥學習,如有錯誤歡迎指出,Thanks♪(・ω・)ノ)
這段程式碼是判斷傳來的陣列是否為空,為空則返回0。

 if(num.length==0||num==null){
            return 0;
        }

這段程式碼是遍歷num[],在迴圈中新進行判斷,如果sum小於零那麼中斷之前的累加,從這個位置重新開始累加,如果大於零,進行累加。result記錄的是上一次sum的值,再次以現在的sum進行比較即可,而result始終保持最大值

for(int n:num){
            sum=(sum>0?sum+n:n);
            result=Math.max(sum,result);
        }

完整程式碼:

public static int p(int[] num){
        if(num.length==0||num==null){
            return 0;
        }
        int result=num[0];
        int sum=0;
        for(int n:num){
            sum=(sum>0?sum+n:n);
            result=Math.max(sum,result);
        }
        return result;
    }

相關文章