Leetcode No.42 接雨水

題目鏈接: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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章