求子陣列的最大和(陣列)

2021-06-22 04:56:31 字數 1122 閱讀 2509

題目部落格:

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

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

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

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

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

**為:

def getmax(*inlist):

return max(getmaxwithindex(0,0,false,inlist),getmaxwithindex(0,0,true,inlist))

def getmaxwithindex(oldsum,index,ischosen,inlist):

if index>=len(inlist):

return oldsum

if not ischosen:

if oldsum!=0:

return oldsum

else:

return max(getmaxwithindex(oldsum,index+1,false,inlist),getmaxwithindex(oldsum,index+1,true,inlist))

else:

oldsum+=inlist[index]

return max(getmaxwithindex(oldsum,index+1,false,inlist),getmaxwithindex(oldsum,index+1,true,inlist))

print getmax(1, -2, 3, 10, -4, 7, 2, -5)

呃呃。。。貪婪法。貪婪法啊。。。

def getmax2(*inlist):

maxvalue=0

sumvalue=0

for num in inlist:

sumvalue+=num

if sumvalue>maxvalue:

maxvalue=sumvalue

elif sumvalue<=0:

sumvalue=0

return maxvalue

求子陣列最大和

題目 輸入乙個整形陣列,陣列裡有正數也有負數。陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和。求所有子陣列的和的最大值。要求時間複雜度為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,因此輸...