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

Leetcode -- Python --Container With Most Water

2014-06-08 11:23 411 查看
题目链接:

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.
Analysis:两个pointer,初始分别在首位位置,然后算出两个pointer处的两条线构成的面积,将面积与最大值比较,去最大者。接下来在选取两条边中得小的边的相邻的边作为新的pointer,再次循环之前的步骤,直到所有的边都已经看过,返回maximum值。

Python代码:

class Solution:
# @return an integer
def maxArea(self, height):
l = len(height)
if l == 1:
return 0
max_v = 0

while(height):

if height[0] > height[l-1]:
max_v = max(max_v, height[l-1] * (l-1))
l = l - 1
height.pop()
else:
max_v = max(max_v, height[0] * (l-1))
l = l - 1
height.pop(0)

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