您的位置:首页 > 编程语言 > Python开发

【LEETCODE】11-Container With Most Water [Python]

2016-01-07 09:03 495 查看
Given n non-negative integers a1,
a2, ..., an, where each represents a point at coordinate (i,
ai). n vertical lines are drawn such that the two endpoints of line
i is at (i, ai) and (i, 0). Find two lines, which together with x-axis forms a container, such that the container contains the most water.
Note: You may not slant the container.

题意:
给 n 个非负整数 a1, a2, ..., an, 每一个代表相应的坐标的点 (i, ai).
画 n条线, line i 连接 (i, ai) and (i, 0)
找到两条线,与 x 轴组成一个容器,满足 这个容器可以盛最多的水

思路:
要求容器的容量,取决于 min(height[p1],height[p2])*(p2-p1)
关键问题是 短板,当然也有两板之间的距离,不过短板可以作为移动的判断条件,目的是使 短板更高一些
两个指针分别从首尾向中间缩,哪个板更短,就移动一下
但面积只记录更大的面积



参考: http://segmentfault.com/a/1190000003815582
Python
class Solution(object):
def maxArea(self, height):
"""
:type height: List[int]
:rtype: int
"""

if height==[]:
return 0

l=len(height)
ans=0

p1=0
p2=l-1

while p1<p2:

ans=max(ans,min(height[p1],height[p2])*(p2-p1))

if height[p1]<height[p2]:
p1+=1
else:
p2-=1

return ans
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: