https://leetcode.com/problems/container-with-most-water/
很经典的贪心和2-pointer的问题,贪心需要想清楚更新条件以及验证是合理的,某种程度下,更难想到。
个人解答
class Solution:
def maxArea(self, h: List[int]) -> int:
l, r = 0, len(h) - 1
res = 0
while l < r:
val = min(h[l], h[r]) * (r - l)
res = max(res, val)
if h[l] > h[r]:
r -= 1
else:
l += 1
return res
题目分析
最大的面积,要么是宽度够大,要么是高度够大,可以先照顾宽度,然后逐渐缩小宽度寻找更高的宽度,这里边每次更新两边界高度更下的那个,保证了更新后的正确性,可以说是很巧妙了。