LC11 盛最多水的容器


1 题目

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

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

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

说明:你不能倾斜容器。

示例 1:

img

输入:[1,8,6,2,5,4,8,3,7]
输出:49 
解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。

示例 2:

输入:height = [1,1]
输出:1

提示:

  • n == height.length
  • 2 <= n <= 105
  • 0 <= height[i] <= 104

2 解答

# leetcode submit region begin(Prohibit modification and deletion)
class Solution:
    def maxArea(self, height: List[int]) -> int:
        n = len(height)
        left = 0
        right = n-1
        array = min(height[left] , height[right]) * (right - left)

        while left < right:
            if height[left] <= height[right]:
                if array <= (min(height[left] ,  height[right]) * (right - left)):
                    array = min(height[left] , height[right] ) * (right - left)
                left += 1

            if height[left] > height[right]:
                if array <= (min(height[left] , height[right]) * (right - left )):
                    array  = min(height[left] ,  height[right]) * (right - left )
                right -= 1

        return  array
# leetcode submit region end(Prohibit modification and deletion)
posted @ 2025-08-26 08:51  AxonoSensei  阅读(7)  评论(0)    收藏  举报