leetcode装最多水的容器383
描述
給定 n 個非負整數 a1, a2, …, an, 每個數代表了坐標中的一個點 (i, ai)。畫 n 條垂直線,使得 i 垂直線的兩個端點分別為(i, ai)和(i, 0)。找到兩條線,使得其與 x 軸共同構成一個容器,以容納最多水。
容器不可傾斜。
樣例 :
輸入: [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
#解題思路:
這題等于說求面積最多。假設我們有兩根柱子,命名為left和right。left和right對應橫坐標。它們形成的面積應為
ans=(right-left)*min(height[left],height[right]).
求解時我們應該不斷更新這個數據:
ans=max(ans,(right-left)*min(height[left],height[right]))。
開始我們的迭代。
(1)面積ans=max(ans,(right-left)*min(height[left],height[right])).
(2)left從左往右走,rgiht同時 從右往左走.
(3)比較left與right的高度,高的先不動,移動矮的。
迭代結束條件為left和right指向同一點。
結果:
c=Solution() a=[1, 3, 2] d=c.maxArea(a) print(d)2
總結
以上是生活随笔為你收集整理的leetcode装最多水的容器383的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: koomll是什么牌子的电子烟?
- 下一篇: pyqt5与matplotlib结合画图