6. Leetcode 11. 盛最多水的容器 (数组-双向双指针)
生活随笔
收集整理的這篇文章主要介紹了
6. Leetcode 11. 盛最多水的容器 (数组-双向双指针)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
給你 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:輸入:[1,8,6,2,5,4,8,3,7]
輸出:49
解釋:圖中垂直線代表輸入數(shù)組 [1,8,6,2,5,4,8,3,7]。在此情況下,容器能夠容納水(表示為藍(lán)色部分)的最大值為?49。
示例 2:輸入:height = [1,1]
輸出:1
示例 3:輸入:height = [4,3,2,1,4]
輸出:16
示例 4:輸入:height = [1,2,1]
輸出:2思路:在每一個(gè)狀態(tài)下,無論長(zhǎng)板或短板收窄 11 格,都會(huì)導(dǎo)致水槽 底邊寬度 ?1:
若向內(nèi)移動(dòng)短板,水槽的短板 min(h[i],h[j]) 可能變大,因此水槽面積 S(i,j) 可能增大。
若向內(nèi)移動(dòng)長(zhǎng)板,水槽的短板 min(h[i],h[j]) 不變或變小,下個(gè)水槽的面積一定小于當(dāng)前水槽面積class Solution:def maxArea(self, height: List[int]) -> int:i, j, res = 0, len(height) - 1, 0while i < j:if height[i] < height[j]:res = max(res, height[i] * (j-i))i += 1else:res = max(res, height[j] * (j-i))j -= 1return res
總結(jié)
以上是生活随笔為你收集整理的6. Leetcode 11. 盛最多水的容器 (数组-双向双指针)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 4. Leetcode 18. 四数之和
- 下一篇: 7. Leetcode 611. 有效三