1. 程式人生 > 其它 >【劍指offer簡單部分10】連續子陣列的最大和(java)

【劍指offer簡單部分10】連續子陣列的最大和(java)

技術標籤:劍指offer資料結構java演算法

題目描述

輸入一個整型陣列,數組裡有正數也有負數。陣列中的一個或連續多個整陣列成一個子陣列。求所有子陣列的和的最大值。要求時間複雜度為 O(n).
在這裡插入圖片描述

分析

實現程式碼如下,必要部分都寫了註釋

public class Solution {
     public int FindGreatestSumOfSubArray(int[] array) {
        if (array == null || array.length == 0){
            return 0;
        }
        int max =
array[0]; //用來儲存當前的最大值 int currentSum = 0; //表示當前的和 for (int i=0; i < array.length; i++){ if (currentSum <= 0){ //當前和小於等於0,儲存當前的值,相當於後移效果 currentSum = array[i]; } else { //當前和大於0,接著累加後面的元素 currentSum =
currentSum + array[i]; } //更換最大值 if (currentSum > max){ max = currentSum; } } return max; } }

在這裡插入圖片描述