力扣第11题-盛最多水的容器

力扣链接:11. 盛最多水的容器 - 力扣(LeetCode)

给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。

找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。

返回容器可以储存的最大水量。

说明:你不能倾斜容器。

"""
思路 左右指针
我们看成是挡板,从首尾两端找到最高的挡板,两个指针之间的距离*两挡板的最低板
低的继续移动

"""


def maxArea(height):
    left = 0
    right = len(height) - 1
    result = 0
    while left < right:
        if height[left] < height[right]:  # 左边的挡板高度小,
            result = max(result, (right - left) * height[left])
            left = left + 1  # 左指针右移动

        else:  # 右边的挡板高度小,或者左右高度一样
            result = max(result, (right - left) * height[right])
            right = right - 1  # 右指针左移动
    return result


print(maxArea([1, 8, 6, 2, 5, 4, 8, 3, 7]))

你可能感兴趣的:(力扣算法(python),leetcode,算法,职场和发展)