21 - Hard - 盛最多水的容器

2018-05-14  本文已影响0人  1f872d1e3817

给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。画 n 条垂直线,使得垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。

注意:你不能倾斜容器,n 至少是2。

从两边向中间移动,哪边短,哪边向中间移动

class Solution:
    def maxArea(self, height):
        """
        :type height: List[int]
        :rtype: int
        """
        _max = 0
        _left = 0
        _right = len(height) - 1
        while _left < _right:
            _max = max(_max, min(height[_left], height[_right]) * (_right - _left))
            if height[_left] < height[_right]:
                _left += 1
            else:
                _right -= 1
        return _max

上一篇 下一篇

猜你喜欢

热点阅读