讓我們看這樣乙個陣列:[1, -2, 3, 4, -5, 6, -7]
很明顯,子陣列和的最大值是8,這個子陣列是[3, 4, -5, 6]
那麼我們怎麼找到最大值是多少呢?
我們假設從第一位開始對每一位加和,當加到3的時候,我們發現,之前的1+(-2)=-1,如果加上3的話等於2,還不如直接從3開始大一些,這時候我們果斷拋棄3前面的計算結果,從3開始重新加和。
當加到-5的時候,我們發現,之前的3+4=7,如果加上-5的話結果變小了,這個時候別急,畢竟加上-5結果2還是大於零的,加上-5的下一位肯定比下一位更大,所以這種時候放心大膽的加上就好。
那麼這時候,我們的規則就出來了:
(1)在遍歷到第 i 位時,如果當時的子陣列加和currentsum<0,那麼直接讓currentsum = sum[i];
(2)在遍歷到第 i 位時,如果當時的子陣列加和currentsum>=0,那麼讓currentsum += sum[i];
(3)別忘了這個步驟:maxsum = math.max(maxsum, currentsum);
附一下我的**:
public int findmaxarray(int array)
int maxsum = integer.min_value;
int currentsum = 0;
for (int i = 0; i < array.length; i++) else
maxsum = math.max(maxsum, currentsum);
} return maxsum;
}
陣列中子陣列和的最大值
輸入乙個整形陣列,陣列裡有正數也有負數。陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和。求所有子陣列的和的最大值。要求時間複雜度為o n 例如輸入的陣列為1,2,3,10,4,7,2,5,和最大的子陣列為3,10,4,7,2,因此輸出為該子陣列的和18。例如輸入的陣列為1,2,3,1...
返回乙個整數陣列中子陣列的最大值
要求 輸入整數陣列,子陣列求和,求子陣列的最大值,時間複雜度為0,設計思想 隨機生成n個整數,規定子陣列的個數最大值為3的隨機值,先生成乙個數n1,在用for迴圈將前n個數向加賦值給sun i 再生成乙個隨機數n2,將n1到n2 之間的數相加賦值給sun j 依次迴圈,如果n1 n2 大於n那將最後...
求乙個二維陣列中 子陣列和的最大值
信1101 2 胡弦琴20113026 王兵茹20112917 這周一的時候老師給的課上練習是在上一次的基礎上,將一位陣列改成二維陣列,求二維陣列中子陣列和的最大值。由於課上時間不多了,只是大概想了乙個思路,我們剛開始想的是窮舉法實現,具體的分析也就是下面我們紙上畫的這些。從一開始將所有的可能都遍歷...