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