码迷,mamicode.com
首页 > 其他好文 > 详细

Container With Most Water

时间:2017-10-26 15:26:39      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:for   containe   size   两个指针   point   color   container   least   nbsp   

Given n non-negative integers a1a2, ..., an, where each represents a point at coordinate (iai). n vertical lines are drawn such that the two endpoints of line i is at (iai) 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 and n is at least 2.

 

分析:

方法一:使用最简单的嵌套循环遍历,找出每一种组合。但此方法超时

方法二:容器的盛水量取决于两块板中的最短板,所以两个指针,一头一尾,记录其盛水量,然后向中间移动其较短的板,期间记录最大盛水量,直至两个指针相遇。这样时间复杂度就由方法一的O(N2)变为了O(N)。使用两个指针,一头一尾的方法很值得借鉴。

class Solution(object):
    def maxArea(self, height):
        """
        :type height: List[int]
        :rtype: int
        """
        n = len(height)
        i = 0
        j = n-1
        max_area = 0
        while(i<j):
            if height[i] < height[j]:
                area = (j-i)*height[i]
                i += 1
            else:
                area = (j-i)*height[j]
                j -= 1
            if area > max_area:
                max_area = area
        return max_area

 

Container With Most Water

标签:for   containe   size   两个指针   point   color   container   least   nbsp   

原文地址:http://www.cnblogs.com/Peyton-Li/p/7736463.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!