連續子陣列的最大和 Python

2021-07-29 19:45:44 字數 544 閱讀 3344

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

直接上:

arr = [1,-2,3,10,-4,7,2,-5]

max_sum = 0

summ = 0

for i in range (0,len(arr)):

summ += arr[i]

if(summ > max_sum):

max_sum = summ #當summ <= 0 時,置summ = 0 ,迴圈繼續,相當於從第a[i+1]個元素開始累加。

if(summ < 0):

summ = 0

print("最大陣列和為"+str(max_sum))

在寫的時候,只想著如何做到從中間的元素開始累加,最後想到,當前a[i]個元素和為0或者小於0的時候,重置summ的值,就相當於從第a[i+1]個元素開始。

連續子陣列的最大和(Python)

問題 連續子串行最大和 給定乙個數字序列 a1a2a3 an 求i,j 1 i j n 使得ai aj和最大,輸出這個最大和 連續大子串行最大和 例如 輸入 l 2 6,1,5,4,7,2,3 輸入 14 即6,1,5,4這個序列的和 思路 最大和連續子陣列一定有如下幾個特點 1 第乙個不為負數 2...

最大和連續子陣列

問題描述 乙個數值型陣列,其子陣列有多個,求其子陣列中最大的和值。所謂和值,是指數組所有元素相加的和。解法 1 掃瞄法,維護max變數,儲存最大和,其初始值為data 0 假設最大和子陣列的第一位下標為i,i從0到n 1,對於每個i值,從data i 開始,進行累加,每加乙個數,與max變數比較一次...

連續子陣列最大和

hz偶爾會拿些專業問題來忽悠那些非計算機專業的同學。今天測試組開完會後,他又發話了 在古老的一維模式識別中,常常需要計算連續子向量的最大和,當向量全為正數的時候,問題很好解決。但是,如果向量中包含負數,是否應該包含某個負數,並期望旁邊的正數會彌補它呢?例如 連續子向量的最大和為8 從第0個開始,到第...