給定 n 個非負整數表示每個寬度為 1 的柱子的高度圖,計算按此排列的柱子,下雨之後能接多少雨水。
示例 1:輸入:height = [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 個單位的雨水(藍色部分表示雨水)。
示例 2:輸入:height = [4,2,0,3,2,5]
輸出:9
}用棧來跟蹤可能儲水的最長的條形塊。
}}給你 n 個非負整數 a1,
a2,.
..,a
na_1,a_2,...,a_n
a1,a2
,..
.,an
,每個數代表座標中的乙個點 (i,
ai)(i, a_i)
(i,ai
)。在座標內畫 n 條垂直線,垂直線 i 的兩個端點分別為 (i,
ai)(i, a_i)
(i,ai
)和 (i,
0)(i, 0)
(i,0
) 。找出其中的兩條線,使得它們與 x 軸共同構成的容器可以容納最多的水。
說明:你不能傾斜容器。
示例 1:輸入:[1,8,6,2,5,4,8,3,7]
輸出:49
解釋:圖中垂直線代表輸入陣列 [1,8,6,2,5,4,8,3,7]。在此情況下,容器能夠容納水(表示為藍色部分)的最大值為 49。
示例 2:輸入:height = [1,1]
輸出:1
示例 3:輸入:height = [4,3,2,1,4]
輸出:16
示例 4:輸入:height = [1,2,1]
輸出:2
水槽的實際高度由兩板中的短板決定。若向內移動短板,水槽的短板可能變大,因此水槽面積可能增大;若向內移動長板,水槽的短板不變或變小,下個水槽的面積一定小於當前水槽面積。class
solution
int skip = math.
max(max / height[i],1
);// 跳過面積比當前最大值小的值
for(
int j = i + skip; j < n;
++j)
}return max;
}}
class
solution
else
}return max;
}}
LeetCode 42 接雨水 雙指標
主要方法 雙指標 正反遍歷 解釋說明 1.正向遍歷 先確定池子左牆初始化為第乙個bar,從第 2 個 bar 開始遍歷右牆,同時記錄中間的 bar 高度和,當右牆大於等於左牆的時候就有第一灘積水了,左右牆距離 左牆高度 中間 bar 和 就是這灘積水的體積,同時將右牆認定為下乙個左牆,同時重新記錄b...
42 接雨水 雙指標
對於乙個較低的坑來說,其儲水量高度取決於左側最高柱與右側最高柱的較小高度 可以用兩個指標,分別從左右兩邊往中間逼近,左側或者右側的儲水量只取決於當前一側的高度差 if len height 0 return 0left,right 0,len height 1 left max,right max ...
接雨水問題 雙指標
暴力法 def rain lis n len lis l max 0 for in range n 記錄每個點為中心,左邊和右邊最高的板高度 r max 0 for in range n for i in range 1,n l max i max l max i 1 lis i 1 for j i...