Skip to main content

题目

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

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

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

**说明:**你不能倾斜容器。

示例 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

提示:

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

解法

暴力法


def solution(height_list:list):
max_area=0
for i in range(0,len(height_list)):
for j in range(0,len(height_list)):
area=min(height_list[i],height_list[j])*(j-i)
if area > max_area:
max_area=area
return max_area

双指针


def solution(height:list):
max_area=0
left_p=0
right_p=len(height)-1
while left_p<right_p:
area = min(height[left_p],height[right_p])*(right_p-left_p)
if area > max_area:
max_area=area
if height[left_p] < height[right_p]:
left_p+=1
else:
right_p-=1
return max_area