每日一题--盛水最多的容器

巧了我就是萌 提交于 2020-02-08 18:52:44

这道题的暴力方法就是遍历所有两个木棍的组合,然后记录最大值。

而想要提升解题速度,可以采用双指针的方法,分别在两端向中心靠拢,根据木桶原则,每次由最短边向长边前进,记录最大盛水量:

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

在开始解题时我虽然已经考虑到了双指针方法,但是是对于如何前进指针比较模糊,现在回头看感觉自己当时真够笨的。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!