Python 中水量最多的容器
pythonserver side programmingprogramming更新于 2025/10/25 11:56:17
假设我们有一组 n 个非负整数 a1、a2、...、an,每个值代表坐标 (i, a[i]) 处的一个点。n 条垂直线以这样的方式存在:线 i 的两个端点分别位于 (i, a[i]) 和 (i, a[0])。我们必须找到两条线,它们与 x 轴一起形成一个容器,因此我们的目标是找到水量最大的两列。因此,如果数组类似于 [1,8,6,2,5,4,8,3,7],那么它将是

在阴影部分,高度为 7,有 7 个部分,因此总面积实际上是 7 * 7 = 49。这是输出。
为了解决这个问题,我们将遵循以下步骤
- low := 0, high := length of arr – 1, ans := 0
- while low < high
- if arr[low] < arr[high]: min_h := height[low] 和 min_ind := low
- 否则 min_h := height[high] 和 min_ind := high
- ans := (high – low)* min_h 和 ans 的最大值
- 如果 low + 1 = min_ind + 1,则将 low 增加 1,否则将 high 减少 1
- 返回 ans
示例
让我们看看下面的实现以便更好地理解 −
class Solution(object): def maxArea(self, height): low = 0 high = len(height) - 1 ans = 0 while low < high: if height[low]<height[high]: min_height = height[low] min_height_index = low else: min_height = height[high] min_height_index = high ans = max(((high - low) ) * min_height,ans) if low+1==min_height_index+1: low+=1 else: high-=1 return ans ob1 = Solution() print(ob1.maxArea([1,8,6,2,5,4,8,3,7]))
输入
[1,8,6,2,5,4,8,3,7]
输出
49
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

