11. 盛最多水的容器

11. 盛最多水的容器

1.思路

A.記錄每一個left,right之間的所能構(gòu)成的面積,求出其中的最大值
即Math.min(height[left],height[right])找出短的木板代表高,他們的寬為[right - left]


image.png

然后依次比較,兩層for循環(huán)就能解決
B.是否有必要比較所有的結(jié)果?
肯定是沒必要的,因為


image.png

如果構(gòu)成的面積即沒有原來的寬長也沒有原來的高長,那么一定小于原來的面積
那么怎么去掉多余的面積呢?
1.找到所有可能比現(xiàn)在大的面積就行了

利用雙指針,固定一端,尋找另一端,那么怎么變呢?
2.比較可能大的面積方向
設(shè)初始left =0,right = height.length-1


image.png

因為height[left] <height[right]
那么初始化的面積為 height[left]*(right - left)
image.png
1.left++(左邊前進(jìn)一格)
  a.height[left++]>height[right]
    area = height[right]*[right-left-1] 因為height[left] <height[right]
且height[left]*[right-left]那么這個面積有可能大于面積

 b.height[left++]<=height[right]
 area = height[left++]*[right-left-1] 因為height[left] <height[right]
且height[left]*[right-left]那么這個面積有可能大于面積
2.right--(右邊前進(jìn)一格)
  a.height[left]>height[right--]
    area = height[right--]*[right-left-1] 因為height[right--]<height[left] <height[right]
且height[left]*[right-left]那么這個面積有不可能大于原面積

 b.height[left]<=height[right--]
 area = height[left]*[right-left-1] 因為height[left] <height[right]
且height[left]*[right-left]那么這個面積也不可能大于原面積

總結(jié):
左邊的高度大于右邊,那么右邊移動,右邊的高度大于左邊,那么左邊移動

2.代碼

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

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

  • 給定 n 個非負(fù)整數(shù) a1,a2,...,an,每個數(shù)代表坐標(biāo)中的一個點 (i, ai) 。在坐標(biāo)內(nèi)畫 n 條垂直...
    LeeYunFeng閱讀 740評論 0 50
  • 給定 n 個非負(fù)整數(shù) a1,a2,...,an,每個數(shù)代表坐標(biāo)中的一個點 (i, ai) 。在坐標(biāo)內(nèi)畫 n 條垂直...
    Gunther17閱讀 711評論 0 1
  • 題目描述 給定 個非負(fù)整數(shù),每個數(shù)代表坐標(biāo)中的一個點 。在坐標(biāo)內(nèi)畫條垂直線,垂直線的兩個端點分別為 和。找出其中的...
    topshi閱讀 164評論 0 1
  • 題目鏈接https://leetcode-cn.com/problems/container-with-most-...
    春天的尐熊閱讀 531評論 0 2
  • 一場秋風(fēng),字符寂寞。想起姹紫嫣紅的相逢,卻留下云淡水流的背影。曾將打馬而過的點點滴滴付諸文字,只為了在將來...
    冰夫閱讀 168評論 0 0

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