leetcode 能乘最多水的容器

题目:给定n个非负整数a1,a2,…,an,每个数代表坐标中的一个点(i,ai).在坐标内画n条垂直线。垂直线I的两个端点分别为(i,ai)和(i,0)。找出其中的两条线。是的它们与x轴共同构成的容器可以容纳最多的水。
说明:不能倾斜容器。且n的值至少为2

思路:要使面积最大,一方面可以让两条垂直线的距离尽量远,所以,一开始设置矩形两边即为所给边界,之后再向中间移,寻找更大值,第二各方面,要让两边中的小值尽量大,所以将较小值向中间移,寻找面积最大化
python 代码实现:

      	   def maxArea(self,height)::
      	   	" " "
      	   	:type heigt: List[int]
      	   	:rtype: int
      	   	" " "
      	   	left=0
      	   	right=len(height)-1
      	   	area=0
      	   	while left<right:
      	   		cur=min(height[left],height[right])*(right-left)
      	   		area=max(area,cur)
      	   		if height(right)>height[left]:
      	   			left+=1
      	   		else:
      	   			right-=1
      	   	return area



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值