算法--盛最多水的容器

算法--盛最多水的容器

題目:

給定 n 個非負(fù)整數(shù) a1,a2,...,an,每個數(shù)代表坐標(biāo)中的一個點(diǎn) (i, ai) 。在坐標(biāo)內(nèi)畫 n 條垂直線,垂直線 i 的兩個端點(diǎn)分別為 (i, ai) 和 (i, 0)。找出其中的兩條線,使得它們與 x 軸共同構(gòu)成的容器可以容納最多的水。

說明:你不能傾斜容器,且 n 的值至少為 2。


在這里插入圖片描述

圖中垂直線代表輸入數(shù)組 [1,8,6,2,5,4,8,3,7]。在此情況下,容器能夠容納水(表示為藍(lán)色部分)的最大值為 49。

示例:

輸入: [1,8,6,2,5,4,8,3,7]
輸出: 49

解題:

方法一: 暴力破解
class Solution {
public:
    int maxArea(vector<int>& height) {
        int length = height.size();
        int maxArea = 0;
        for(int i = 0; i < length; i++){
            for(int j = i + 1; j < length; j++){
                maxArea = max(maxArea, min(height[i], height[j]) * (j - i));
            }
        }
        return maxArea;
    }
};
方法二:雙指針法

為了使面積最大化,我們需要考慮更長的兩條線段之間的區(qū)域。如果我們試圖將指向較長線段的指針向內(nèi)側(cè)移動,矩形區(qū)域的面積將受限于較短的線段而不會獲得任何增加。但是,在同樣的條件下,移動指向較短線段的指針盡管造成了矩形寬度的減小,但卻可能會有助于面積的增大。因?yàn)橐苿虞^短線段的指針會得到一條相對較長的線段,這可以克服由寬度減小而引起的面積減小。

int maxArea(vector<int>& height) {
   int length = height.size();
    int maxArea = 0;
    int i = 0, j = length - 1;
    while(i < j){
        maxArea = max(maxArea, min(height[i], height[j]) * (j - i));
        if (height[i] < height[j]){
            i ++;
        }else{
            j --;
        }
    }
    return maxArea;
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 題目:給定 n 個非負(fù)整數(shù) a1,a2,...,an,每個數(shù)代表坐標(biāo)中的一個點(diǎn) (i, ai) 。在坐標(biāo)內(nèi)畫 n ...
    cooooper閱讀 898評論 0 0
  • 給定 n 個非負(fù)整數(shù) a1,a2,...,an,每個數(shù)代表坐標(biāo)中的一個點(diǎn) (i, ai) 。在坐標(biāo)內(nèi)畫 n 條垂直...
    LeeYunFeng閱讀 735評論 0 50
  • 題目介紹 題目:盛最多水的容器描述:給定 n 個非負(fù)整數(shù) a1, a2, ..., an,每個數(shù)代表坐標(biāo)中的一個點(diǎn)...
    大大紙飛機(jī)閱讀 600評論 0 2
  • 摘要 如題意,垂直的兩條線段將會與坐標(biāo)軸構(gòu)成一個矩形區(qū)域,較短線段的長度將會作為矩形區(qū)域的寬度,兩線間距將會作為矩...
    zzpwestlife閱讀 272評論 0 2
  • 印象深刻的部分、與現(xiàn)實(shí)的聯(lián)系 1、如果我只看到痛苦,我的心難免會被烏云所籠罩,被絕望所吞沒。 由于認(rèn)為自己“應(yīng)該”...
    一壇子泡菜閱讀 374評論 0 0

友情鏈接更多精彩內(nèi)容