python leetcode 42. Trapping Rain Water
阿新 • • 發佈:2018-12-01
首先最左邊和最右邊肯定無法蓄水
考慮能蓄水的情況:左右兩邊的高度都大於height[i]
所以得左右遍歷找到heigh[i]時的左右最大值
再遍歷height 當min(maxL[i],maxR[i])>height[i]即能蓄水
class Solution: def trap(self, height): """ :type height: List[int] :rtype: int """ n = len(height) if n<3:return 0 right=[0]*n maxR=height[-1] for j in range(n-2,-1,-1): if height[j]>maxR: maxR=height[j] right[j]=maxR res=0 maxL=height[0] for i in range(1,n-1,1): if height[i]>maxL: maxL=height[i] elif min(maxL,right[i])>height[i]: res+=min(maxL,right[i])-height[i] return res