[LeetCode]11. Container With Most Water

11. Container With Most Water

没看清楚题目,题中让选中两条线,使其能够装下最多的水。

思路如下:

  1. 最左和最右两条线显然就是最好的候选者,因为宽度是最宽的,计算其盛水面积;
  2. 如果双方中任意一方的水位较低,为了要找到更高的水位,需要进行移动,左向右移,右向左移;
class Solution(object):
    def maxArea(self, height):
        """
        :type height: List[int]
        :rtype: int
        """
        if len(height) == 2:
            return min(height)
        left, right = 0, len(height) - 1
        water = 0
        while left < right:
            water = max(water, (right - left) * min(height[left], height[right]))
            if height[left] < height[right]:
                left += 1
            else:
                right -= 1
        return water
posted @ 2017-08-19 00:42  banananana  阅读(146)  评论(0)    收藏  举报