'''
解题思路:
1、从左向右,从右向左各扫一遍,记住当前最大值,
2、如果当前值小于最大值,则计算水容量,如果当前值大于最大值,则更新最大值
3、对应位置左右扫描取小,即是实际容量,
4、第二次扫描时同时计算容量,少一次遍历
'''
# max water
# @param arr int整型一维数组 the array
# @return long长整型
#
class Solution:
def maxWater(self , arr ):
# write code here
L = arr
n = len(arr)
if n<3:
return 0
i_max = arr[0]
w1 = []
for i in range(1,n-1):
if L[i]>i_max:
i_max = L[i]
w1.append(0)
else:
w1.append(i_max-L[i])
i_max = arr[-1]
w2 = []
res = 0
for i in range(n-2,0,-1):
if L[i]>i_max:
i_max = L[i]
else:
res += min(w1[i-1],i_max-L[i])
#print(w1)
#print(w2)
return res
#Solution().maxWater([3,1,2,5,2,4])