盛水最多的容器

2021-10-05 05:13:18 字數 688 閱讀 9628

給你 n 個非負整數 a1,a2,…,an,每個數代表座標中的乙個點 (i, ai) 。在座標內畫 n 條垂直線,垂直線 i 的兩個端點分別為 (i, ai) 和 (i, 0)。找出其中的兩條線,使得它們與 x 軸共同構成的容器可以容納最多的水。

盛水最多的容器

雙層for迴圈

加一層判斷

對於乙個區間

如果選定左端 那麼理論上的最大長度為 左端高度 * 總長度

假設最大面積可以取到此值那就不需要繼續遍歷

class

solution

currarea =

(j - i)

* math.

min(height[i]

, height[j]);

max = max < currarea ? currarea : max;

if(height[j]

>= height[i]

)else}}

return max;

}}

maxarea = len * min(h1,h2)

可以直接先選擇最大len 然後再逐步縮小len尋找最大解

如果縮小len 那麼一定是要增大min(h1,h2)才能找到更大的解

盛最多水的容器

給定 n 個非負整數 a1,a2,an,每個數代表座標中的乙個點 i,ai 畫 n 條垂直線,使得垂直線 i 的兩個端點分別為 i,ai 和 i,0 找出其中的兩條線,使得它們與 x 軸共同構成的容器可以容納最多的水。注意 你不能傾斜容器,n 至少是2。乍一看很簡單,巢狀迴圈遍歷就完事了 int m...

盛最多水的容器

題目描述 給定 n 個非負整數 a1,a2,an,每個數代表座標中的乙個點 i,ai 在座標內畫 n 條垂直線,垂直線 i 的兩個端點分別為 i,ai 和 i,0 找出其中的兩條線,使得它們與 x 軸共同構成的容器可以容納最多的水 說明 你不能傾斜容器,且 n 的值至少為 2。示例 輸入 1,8,6...

盛最多水的容器

給定 n 個非負整數 a1,a2,an,每個數代表座標中的乙個點 i,ai 在座標內畫 n 條垂直線,垂直線 i 的兩個端點分別為 i,ai 和 i,0 找出其中的兩條線,使得它們與 x 軸共同構成的容器可以容納最多的水。說明 你不能傾斜容器,且 n 的值至少為 2。圖中垂直線代表輸入陣列 1,8,...