leetcode盛最多水的容器

2021-10-06 17:01:23 字數 933 閱讀 8137

雙指標問題,我們可以設定兩個指標,乙個指向容器的左垂線,乙個指向容器的右垂線。容器盛多少水是由兩垂線的距離和較短垂線的高度決定的,設定乙個變數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...