题解 | #盛水最多的容器#
盛水最多的容器
https://www.nowcoder.com/practice/3d8d6a8e516e4633a2244d2934e5aa47
暴力解法 类似冒泡排序算出来,但是会超时
class Solution:
def maxArea(self , height: List[int]) -> int:
##write code here
temp=[]
temp_max=[]
num=len(height)
if num<2:
return 0
for i in range(num):
for j in range(i+1,num):
if height[i]>=height[j]:
temp.append(height[j]*(j-i))
else:
temp.append(height[i]*(j-i))
if temp==[]:
break
a=max(temp)
temp_max.append(a)
temp.clear()
a=max(temp_max)
return a
双指针解法 算是一个公式 类似比大小 左右指针互相移动 假设一开始边界最大
class Solution:
def maxArea(self , height: List[int]) -> int:
##write code here
num = len(height)
if num<2:
return 0
temp=0
left=0
right=num-1
while left<right:
temp_max=min(height[left],height[right]) *(right-left)
temp=max(temp,temp_max)
if height[left]<height[right]:
left=left+1
else:
right=right-1
return temp


