雙指標問題,我們可以設定兩個指標,乙個指向容器的左垂線,乙個指向容器的右垂線。容器盛多少水是由兩垂線的距離和較短垂線的高度決定的,設定乙個變數result表示最終結果,計算出當前指標組成的容器的容量,如果容量大於result則更新result的值,並且移動指向較短垂線的指標
class
solution
:def
maxarea
(self, height)
: length =
len(height)
left, right =
0, length-
1# left和right分別指向容器的左右垂線
result =
(right - left)
*min
(height[left]
, height[right]
)while left < right:
if height[left]
< height[right]
:# 左垂線較短則移動左指標
left +=
1 s =
(right - left)
*min
(height[left]
, height[right]
)if result < s:
result = s
else
:# 右垂線較短,移動右指標
right -=
1 s =
(right - left)
*min
(height[left]
, height[right]
)if result < s:
result = s
return result
LeetCode 盛最多水的容器
題目 給定 n 個非負整數 a 1,a2,a n,每個數代表座標中的乙個點 i,ai 畫 n 條垂直線,使得垂直線 i 的兩個端點分別為 i,ai 和 i,0 找出其中的兩條線,使得它們與 x 軸共同構成的容器可以容納最多的水。思路 定義兩個指標,分別指向list的頭和尾,對應容器的左壁和右壁。隨後...
LeetCode 盛最多水的容器
給定 n 個非負整數 a1,a2,an,每個數代表座標中的乙個點 i,ai 在座標內畫 n 條垂直線,垂直線 i 的兩個端點分別為 i,ai 和 i,0 找出其中的兩條線,使得它們與 x 軸共同構成的容器可以容納最多的水。說明 你不能傾斜容器,且 n 的值至少為 2。圖中垂直線代表輸入陣列 1,8,...
LeetCode 盛最多水的容器
給定 n 個非負整數 a1,a2,an,每個數代表座標中的乙個點 i,ai 在座標內畫 n 條垂直線,垂直線 i 的兩個端點分別 為 i,ai 和 i,0 找出其中的兩條線,使得它們與 x 軸共同構成的容器可以容納最多的水。說明 你不能傾斜容器,且 n 的值至少為 2。示例 輸入 1,8,6,2,5...