美文网首页
leetcode11. 盛最多水的容器 python实现

leetcode11. 盛最多水的容器 python实现

作者: vvblack4 | 来源:发表于2020-02-19 14:46 被阅读0次

    题目:

    leetcode11题目描述

    解法:

        最开始采用两重for循环,遍历数组选出两个值,计算面积,但该方法超时,弃之。
        我们定义两个指针l和r分别指向数组的左右两端。然后两个指针向中间搜索,每移动一次计算一次面积,并和当前的最大面积值作比较,直到两指针重合,结束搜索。
        如何确定每次移动的是哪个指针?比较当前两指针对应的值,移动较小值的指针。举例来说,[1,8,6,2,5,4,8,3,7]最开始两指针指向1和7,1<7,所以向右移动数值1到8。因为如果移动大的数值7,接下来的面积只可能≤当前面积。而移动小的数值,接下来的面积可能比当前面积大。

    具体代码如下:

    class Solution:
        def maxArea(self, height: List[int]) -> int:
            l = 0
            r = len(height)-1
            res_area = 0
            while l<r:
                res_area = max((r-l)*min(height[l],height[r]),res_area)
                if height[l]>height[r]:
                    r-=1
                else:
                    l+=1
            return res_area
    

    相关文章

      网友评论

          本文标题:leetcode11. 盛最多水的容器 python实现

          本文链接:https://www.haomeiwen.com/subject/nodafhtx.html