陣列
一、題目:(感謝
提供的題目)
求子陣列的最大和
輸入乙個整形陣列,陣列裡有正數也有負數。陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和。
求所有子陣列的和的最大值。要求時間複雜度為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。分析 本題最初...