LeetCode #11 Container With Most Water

题目

Container With Most Water


解题方法

题目希望求得最大面积,即左右两个板子中较小的那个的高度乘以两个板子之间的跨度,而众所周知的是最大跨度为数组的长度,因此为了达到最大面积,可以考虑从左右两端开始向中间找。

设置左右两个指针分别为i,j,每次移动时仅移动数值较小的那个,并检查最大面积是否需要更新,当i和j重合时循环结束,最大面积也就找到了。


代码

# Python
class Solution:
    def maxArea(self, height: List[int]) -> int:
        i, j, maxarea = 0, len(height) - 1, 0
        
        while i < j:
            maxarea = max(maxarea, min(height[i], height[j]) * (j - i))
            if height[i] < height[j]:
                i += 1
            else:
                j -= 1
        
        return maxarea
posted @ 2020-09-18 11:20  老鼠司令  阅读(109)  评论(0)    收藏  举报