題目鏈接:https://leetcode-cn.com/problems/trapping-rain-water
給定 n 個非負整數表示每個寬度爲 1 的柱子的高度圖,計算按此排列的柱子,下雨之後能接多少雨水。
上面是由數組 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度圖,在這種情況下,可以接 6 個單位的雨水(藍色部分表示雨水)。
示例:
輸入: [0,1,0,2,1,0,1,3,2,1,2,1]
輸出: 6
方法 1:暴力
直觀想法
直接按問題描述進行。對於數組中的每個元素,我們找出下雨後水能達到的最高位置,等於兩邊最大高度的較小值減去當前高度的值。
算法
初始化 ans=0
從左向右掃描數組:
初始化 max_left=0 和max_right=0
從當前元素向左掃描並更新:
max_left=max(max_left,height[j])
從當前元素向右掃描並更新:
max_right=max(max_right,height[j])
將min(max_left,max_right) −height[i] 累加到ans
python
class