[Leedcode][JAVA][第11題][盛最多水的容器][雙指針][貪心]

【問題描述】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)成的容器可以容納最多的水。

示例:

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

【解答思路】

1. 貪心算法 暴力

求解是要獲得最大面積,即以第一個(gè)面積值作為假定的最大面積,然后不斷的用更大的值刷新,直到將所有的面積都計(jì)算完畢。
S(i,j)=min(h[i],h[j])×(j?i)
時(shí)間復(fù)雜度:O(N^2) 空間復(fù)雜度:O(1)

class Solution {
    public int maxArea(int[] height) {
        int area = 0;

        for (int i = 0; i < height.length - 1; i++) {
            int iValue = height[i];
            for (int j = i + 1; j < height.length; j++) {
                int jValue = height[j];
                int hValue = Math.min(iValue, jValue);
                int lValue = j - i;
                int aValue = lValue * hValue; 

                if (aValue > area) {
                    area = aValue;
                }
            }
        }

        return area;
    }


}


2. 雙指針

時(shí)間復(fù)雜度:O(N) 空間復(fù)雜度:O(1)

    public int maxArea(int[] height) {
        int area = 0;

        for (int i = 0; i < height.length - 1; i++) {
            int iValue = height[i];
            for (int j = i + 1; j < height.length; j++) {
                int jValue = height[j];
                int hValue = Math.min(iValue, jValue);
                int lValue = j - i;
                int aValue = lValue * hValue; 

                if (aValue > area) {
                    area = aValue;
                }
            }
        }

        return area;
    }


}

【總結(jié)】

1. 暴力法思考 逐漸優(yōu)化
2. 雙指針 相清楚移動(dòng)哪一個(gè)可以優(yōu)化
3.思路一開始找兩個(gè)最大值,由內(nèi)推到外,過于復(fù)雜,應(yīng)及時(shí)放棄思路
image.png
?著作權(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),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 在C語言中,五種基本數(shù)據(jù)類型存儲(chǔ)空間長度的排列順序是: A)char B)char=int<=float C)ch...
    夏天再來閱讀 4,031評(píng)論 0 2
  • 字符串匹配KMP算法詳解 1. 引言 以前看過很多次KMP算法,一直覺得很有用,但都沒有搞明白,一方面是網(wǎng)上很少有...
    張晨輝Allen閱讀 2,623評(píng)論 0 3
  • 題目:給定 n 個(gè)非負(fù)整數(shù) a1,a2,...,an,每個(gè)數(shù)代表坐標(biāo)中的一個(gè)點(diǎn) (i, ai) 。在坐標(biāo)內(nèi)畫 n ...
    關(guān)山Kwan閱讀 125評(píng)論 0 0
  • 2020-01-03晨間日記 今天印象 * 天氣狀況: * * 雖然不能要求每天都是晴天, * * 但在合適的時(shí)候...
    觀茉閱讀 504評(píng)論 0 2
  • 哈哈哈哈哈嗝 首先火鍋鎮(zhèn)樓 開學(xué)前兩天晚8.30吃到了心心念念的火鍋 賊開心?畢竟我搶了很久的小龍坎套餐 賊開心?...
    慆慆不歸y閱讀 346評(píng)論 0 0

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