#coding:utf-8
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param A int整型一维数组
# @param n int整型
# @return int整型
#
class Solution:
def getDis(self , A , n ):
# write code here
##debug
##维护两个数组,当前数组前面最小的,和后面最大的
left_min = [float('inf')] * n
right_max = [float('-inf')] * n
#set left min
left_min[0] = A[0]
for i in range(1, n):
cur_min = min(A[i], left_min[i - 1])
#print ("cur_min: ", cur_min)
left_min[i] = cur_min
right_max[n - 1] = A[n - 1]
for i in range(n - 2, -1, -1):
cur_max = max(A[i], right_max[i + 1])
right_max[i] = cur_max
#print ("Left min: ", left_min)
#print ("Right max: ", right_max)
#calculte
max_val = 0
for i in range(0, n):
#print (i)
max_val = max(max_val, right_max[i] - left_min[i])
return max_val