11.盛最多水的容器

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

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

示例:

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

這道題用到了雙指針法。從兩頭向中間逼近,每次移動(dòng)較短的線。
這是因?yàn)椋苿?dòng)較長(zhǎng)的線,可用高度不可能變高,而寬度一定減少,也就是說,總?cè)萘恳欢ㄏ陆怠?br> 而移動(dòng)較短的線,可用高度有可能變高,寬度一定減少,也就是說,有可能使總?cè)萘可仙?/p>

明白這里以后,整道題就很容易了

具體代碼:

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

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

  • 題目 給定 n 個(gè)非負(fù)整數(shù) a1,a2,...,an,每個(gè)數(shù)代表坐標(biāo)中的一個(gè)點(diǎn) (i, ai) 。在坐標(biāo)內(nèi)畫 n ...
    sxqiong閱讀 350評(píng)論 2 0
  • 給定 n 個(gè)非負(fù)整數(shù) a1,a2,...,an,每個(gè)數(shù)代表坐標(biāo)中的一個(gè)點(diǎn) (i, ai) 。在坐標(biāo)內(nèi)畫 n 條垂直...
    vbuer閱讀 227評(píng)論 0 0
  • 一、題目原型: 給定 n 個(gè)非負(fù)整數(shù) a1,a2,...,an,每個(gè)數(shù)代表坐標(biāo)中的一個(gè)點(diǎn) (i, ai) 。畫 n...
    花果山松鼠閱讀 833評(píng)論 0 0
  • 題目: https://leetcode-cn.com/problems/container-with-most-...
    像計(jì)算機(jī)一樣思考閱讀 263評(píng)論 0 0
  • 今日體驗(yàn):今天又加了一遍今年的年目標(biāo)達(dá)成情況.這個(gè)月任務(wù)非常艱巨.要想達(dá)成目標(biāo)必須突破以往的所有目標(biāo).只要這樣才可...
    京心達(dá)何海港閱讀 187評(píng)論 0 1

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