美文网首页
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