蓝桥杯练习代码

一、盛最多水的容器

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

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

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

说明:你不能倾斜容器。

示例 1:

蓝桥杯练习代码_第1张图片

输入:[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

经典双指针问题

class Solution(object): 
    def maxArea(self,height):
        left, right = 0, len(height) - 1  # 初始化双指针
        max_area = 0  # 最大水量

        while left < right:
            # 计算当前容器的水量
            area = (right - left) * min(height[left], height[right])
            # 更新最大水量
            max_area = max(max_area, area)
            # 移动较短的垂线的指针
            if height[left] < height[right]:
              left += 1
            else:
              right -= 1
        return

你可能感兴趣的:(蓝桥杯训练题目,蓝桥杯,笔记,学习)