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