求子陣列的最大和

2021-06-08 17:28:06 字數 898 閱讀 9123

陣列

一、題目:(感謝

提供的題目)

求子陣列的最大和

輸入乙個整形陣列,陣列裡有正數也有負數。

陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和。

求所有子陣列的和的最大值。要求時間複雜度為o(n)。

例如輸入的陣列為1, -2, 3, 10, -4, 7, 2, -5,和最大的子陣列為3, 10, -4, 7, 2,

因此輸出為該子陣列的和18。

二、題目分析:

(1)看到題目的第一反應就是乙個while迴圈再在裡面新增乙個for迴圈,遍歷所有可能的組合,輸出最大值。這樣的時間複雜度為o(n^2),不符合題目的要求。

(2)把陣列依次遍歷相加,如果相加結果少於0,就清空;大於0就繼續。最終得到最大和。

三、**:

(1)

//時間複雜度為o(n^2)

const int total = 11;    //陣列元素個數

int index = 0;    //當前陣列指標

int sum = 0;    //單個總和

int s_max = - (1 << 31);    //最大總和 (int型的範圍為:-2^31 -- 2^31)

int a[total] = ;

while(index < total)

index++;

}cout< s_max) s_max = sum;

if (sum < 0) sum = 0;

} cout<

求子陣列最大和

題目 輸入乙個整形陣列,陣列裡有正數也有負數。陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和。求所有子陣列的和的最大值。要求時間複雜度為o n 例如輸入的陣列為1,2,3,10,4,7,2,5,和最大的子陣列為3,10,4,7,2,因此輸出為該子陣列的和18。因為是o n 的複雜度,...

求子陣列的最大和

題目 輸入乙個整形陣列,陣列裡有正數也有負數。陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和。求所有子陣列的和的最大值。要求時間複雜度為o n 本題最初為2005年浙江大學計算機系的考研題的最後一道程式設計題,在2006年裡包括google在內的很多知名公司都把本題當作面試題。由於本...

求子陣列的最大和

題目 輸入乙個整形陣列,陣列裡有正數也有負數。陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和。求所有子陣列的和的最大值。要求 時間複雜度為 o n 例 輸入的陣列為 1,2,3,10,4,7,2,5,和最大的子陣列為 3,10,4,7,2,因此輸出為該子陣列的和 18。分析 本題最初...