演算法目的:求子陣列的最大累加和問題
演算法要求:時間複雜度o(n),空間o(1),n為陣列長度;
演算法原理:從左到右遍歷陣列arr,用遍歷cur記錄每一步的累加和,當cur<0時,說明累加到當前數出現了<0的結果,
那麼累加的這一部分肯定不能作為產生最大累加和的子陣列的左邊部分,此時令cur=0,表示重新從下乙個數開始累加,
當cur>0時,每一次累加都可能是最大的累加和,所以,用另外乙個變數max全程跟蹤記錄cur出現的最大值即可。
演算法實現:
/** to change this license header, choose license headers in project properties.
* to change this template file, choose tools | templates
* and open the template in the editor.
*/package algorithm_database;
/** * 求子陣列的最大累加和問題
* @author zhengchao
*/public class maxtotal ;
system.out.println(maxtotal(str));
}public static int maxtotal(int intstr){
int max = integer.min_value;
int cur=0;
for(int i=0;i
求子陣列的最大和,java版本
3.求子陣列的最大和 題目 輸入乙個整形陣列,陣列裡有正數也有負數。陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和。求所有子陣列的和的最大值。要求時間複雜度為o n 例如輸入的陣列為1,2,3,10,4,7,2,5,和最大的子陣列為3,10,4,7,2,因此輸出為該子陣列的和18。p...
求子陣列的最大和
題目 輸入乙個整形陣列,陣列裡有正數也有負數。陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和。求所有子陣列的和的最大值。要求時間複雜度為o n 本題最初為2005年浙江大學計算機系的考研題的最後一道程式設計題,在2006年裡包括google在內的很多知名公司都把本題當作面試題。由於本...
求子陣列的最大和
陣列 一 題目 感謝 提供的題目 求子陣列的最大和 輸入乙個整形陣列,陣列裡有正數也有負數。陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和。求所有子陣列的和的最大值。要求時間複雜度為o n 例如輸入的陣列為1,2,3,10,4,7,2,5,和最大的子陣列為3,10,4,7,2,因此輸...