這題是很好的遞迴問題,每次遞迴的時候都要帶入此次遞迴的左右邊界、及這次是要取區間最大還是取區間最小的flag。
完整程式如下:
def t(l , r , isBig):
if l == r-1:
return d[l]
m = (l+r)//2
if isBig:
g = max(t(l,m,0) , t(m,r,0))
else:
g = min(t(l,m,1) , t(m,r,1))
return g
n = int(input())
d = [int(i) for i in input().split()]
print(t(0,n,1))