LeetCode-011-盛最多水的容器

題目描述:給你 n 個非負整數(shù) a1,a2,...,an,每個數(shù)代表坐標中的一個點 (i, ai) 。在坐標內(nèi)畫 n 條垂直線,垂直線 i 的兩個端點分別為 (i, ai) 和 (i, 0) 。找出其中的兩條線,使得它們與 x 軸共同構(gòu)成的容器可以容納最多的水。
說明:你不能傾斜容器。
示例說明請見LeetCode官網(wǎng)。
來源:力扣(LeetCode) ??
鏈接:https://leetcode-cn.com/problems/container-with-most-water/ ??
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。
解法一:暴力求解法
雙重循環(huán)求解所有可能的值,取得最大的值。
這個方法能得到結(jié)果,但是效率極低,提交時超時了。
解法二:雙指針法
從左右兩邊開始遍歷,2個指針p和q分別指向左右兩邊的值,計算容量,和最大值比較,然后p和q中指向的較小的值的指針移動一位,因為寬度一定容量取決于高度,如果移動較大的值,則不會獲得更大的容量。
重復這個過程,知道p和q指針相交,得到最大容量值。
標簽: