2016-11-03 117 views
0

這個程序是爲大多數輸入找到第二大數字,但它不適用於以下輸入。

n=4 
a1 = '-7 -7 -7 -7 -6' 
a1=[int(arr_temp) for arr_temp in a1.strip().split(' ')] 
print(a1) 
largest = max(a1) 
largest2 = 0 
for i in range(0,len(a1)): 
    if ((a1[i]>largest2 or a1[i]<0) and largest2<largest and a1[i]!=largest): 
     largest2 = a1[i] 
print(largest2) 

回答

1

將largest2設置爲0只會使if語句稍後複雜化。將其設置爲數組中的最小值並且變得更清晰。

n=4 
a1 = '-7 -7 -7 -7 -6' 
a1=[int(arr_temp) for arr_temp in a1.strip().split(' ')] 
print(a1) 
largest = max(a1) 
largest2 = min(a1) 

for i in range(0,len(a1)): 
    if (a1[i] > largest2) and (a1[i] < largest): 
    largest2 = a1[i] 

print(largest2) 

請注意,如果數組較大,則min調用將變得非常重要。在這種情況下,您可以將maximum2設置爲儘可能最小的值(在此注意,this鏈接可能會有用)

+0

感謝info.i沒有足夠的聲譽,這就是爲什麼我的投票沒有被顯示。 – eldhoittangeorge