【leetcode系列】【py3】【中等】盛最多水的容器

题目:

【leetcode系列】【py3】【中等】盛最多水的容器

原题链接: https://leetcode-cn.com/problems/container-with-most-water/

 

解题思路:

典型的双指针问题

开始的时候,两个指针指向首尾,并计算面积

因为面积取决于矮的一边,希望矮的一边变的更高,从而使整体面积更大

所以每次都将更短的一边,向另外一边移动,并计算面积,比对当前面积和最大面积,并记录最大面积

直到首尾双指针相遇,返回最大面积

 

代码实现:

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

        return max_area