# # # @param A int整型一维数组 # @return int整型 # class Solution: def count(self, left, right, index_l, index_r, data): high = min(left, right) water = 0 for i in range(index_l + 1, index_r): water += (high - data[i]) return water def trap(self , A ): # write code here water = 0 lock = True left = 0 right = 0 index_l = 0 index_r = 0 number = 0 for i in range(0, len(A)): if lock and A[i] != 0: lock = False left = A[i] index_l = i continue if lock: continue if A[i] >= left and number == 0: left = A[i] index_l = i elif A[i] < left: number += 1 elif A[i] >= left and number != 0: right = A[i] index_r = i water += Solution.count(self, left, right, index_l, index_r, A) left = A[i] index_l = i number = 0 if i == len(A) - 1 and number != 0: B = A[index_l: len(A)] B.reverse() water += Solution.trap(self, B) return water