您的位置:首页 > 大数据 > 人工智能

[Leetcode]Container With Most Water

2015-01-13 15:50 369 查看
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.

设两个指针p1, p2,从数组两端走~maxVal用以维护最大的容积,然后判断两个指针指向的高度哪个大,如果height[p1] > height[p2],那么把p1向中间移动肯定得不到更优的解,所以每次选较矮的一块往中间移~时间复杂度为O(N)

class Solution:
# @return an integer
def maxArea(self, height):
if height is None or len(height) == 0: return 0
p1, p2 = 0, len(height) - 1
maxVal = 0
while p1 < p2:
maxVal = max(min(height[p1], height[p2]) * (p2 - p1), maxVal)
if height[p1] > height[p2]:
p2 -= 1
else:
p1 += 1
return maxVal
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode python