题目
给定一个长度为 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