leetcode装最多水的容器383
描述
給定 n 個(gè)非負(fù)整數(shù) a1, a2, …, an, 每個(gè)數(shù)代表了坐標(biāo)中的一個(gè)點(diǎn) (i, ai)。畫 n 條垂直線,使得 i 垂直線的兩個(gè)端點(diǎn)分別為(i, ai)和(i, 0)。找到兩條線,使得其與 x 軸共同構(gòu)成一個(gè)容器,以容納最多水。
容器不可傾斜。
樣例 :
輸入: [1, 3, 2, 2]
輸出: 4
解釋:
選擇 a1, a2, 容量為 1 * 1 = 1
選擇 a1, a3, 容量為 1 * 2 = 2
選擇 a1, a4, 容量為 1 * 3 = 3
選擇 a2, a3, 容量為 2 * 1 = 2
選擇 a2, a4, 容量為 2 * 2 = 4
選擇 a3, a4, 容量為 2 * 1 = 2
#解題思路:
這題等于說(shuō)求面積最多。假設(shè)我們有兩根柱子,命名為left和right。left和right對(duì)應(yīng)橫坐標(biāo)。它們形成的面積應(yīng)為
ans=(right-left)*min(height[left],height[right]).
求解時(shí)我們應(yīng)該不斷更新這個(gè)數(shù)據(jù):
ans=max(ans,(right-left)*min(height[left],height[right]))。
開(kāi)始我們的迭代。
(1)面積ans=max(ans,(right-left)*min(height[left],height[right])).
(2)left從左往右走,rgiht同時(shí) 從右往左走.
(3)比較left與right的高度,高的先不動(dòng),移動(dòng)矮的。
迭代結(jié)束條件為left和right指向同一點(diǎn)。
結(jié)果:
c=Solution() a=[1, 3, 2] d=c.maxArea(a) print(d)2
總結(jié)
以上是生活随笔為你收集整理的leetcode装最多水的容器383的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: koomll是什么牌子的电子烟?
- 下一篇: 男孩名字用衡字取名 男孩名字用衡字取名有