leetcode 11 盛最多水的容器

2022-03-14 03:22:37 字數 745 閱讀 4943

盛最多水的容器

題意好繞,看半天都沒懂要幹什麼。

我直接上個圖可能就能一眼看明白了:

總之,當明白題意後,直接就能想到暴力法列舉所有可能性,不過如果再畫一下圖基本就能發現:兩線段之間形成的區域總是會受到其中較短那條長度的限制。

我舉個例子,對於所有以(1,a1)為左邊構成的矩陣,最大的乙個肯定在右邊(n,an)開始數,第乙個大於等於ai的邊,我們記成aj。即以a1為左邊的最大矩陣肯定是 以right邊從(j,aj)(n,an)構成矩陣中的其中乙個。實際上,對於(1,a1)(j,aj)的邊,我們就沒有必要去算了。然後,以(2,a2)為左邊,此時注意,如果a2小於等於a1,那麼不必算了。如果a2>a1,那麼此時與a1同理。依次類推。。(我想到的這個思路感覺好繞- -)

官方給出的雙指標法好像更清晰易懂一些,貪心思想:

最初我們考慮由最外圍兩條線段構成的區域。現在,為了使面積最大化,我們需要考慮更長的兩條線段之間的區域。如果我們試圖將指向較長線段的指標向內側移動,矩形區域的面積將受限於較短的線段而不會獲得任何增加。但是,在同樣的條件下,移動指向較**段的指標儘管造成了矩形寬度的減小,但卻可能會有助於面積的增大。因為移動較**段的指標會得到一條相對較長的線段,這可以克服由寬度減小而引起的面積減小。

題不錯,其實還比較考驗智商的,打算把他選為面試題

**不貼了

leetcode11 盛最多的水

題意 給出乙個陣列表示乙個容器,陣列中的每個數字表示容器中每個柱子的高度,每兩根柱子中的間距為1,問該容器最大的盛水量。思路1 暴力法 最簡單的思路就是暴力遍歷,乙個迴圈從頭到尾,乙個迴圈從尾到上乙個迴圈指向的位置,計算每兩根柱子之間的盛水量,將最大的盛水量返回。public int maxarea...

leetcode 11 盛最多的水

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

LeetCode 11 盛最多水的容器

給定 n 個非負整數 a1,a2,an,每個數代表座標中的乙個點 i,ai 畫 n 條垂直線,使得垂直線 i 的兩個端點分別為 i,ai 和 i,0 找出其中的兩條線,使得它們與 x 軸共同構成的容器可以容納最多的水。注意 你不能傾斜容器,n 至少是2。左右指標法 首先指標指向最左 最右 當左邊的高...