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