leetcode 雙指標 接雨水 盛水最多的容器

2021-10-20 19:54:09 字數 2103 閱讀 8626

給定 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...