题目
    011.盛水最多的容器

    思路
    双指针,一个置于开始i,一个置于末尾j。max_vol记录当前最大容量。
    容量大小总是受短的一边影响,短板效应;所以要找到比当前max_vol更大的容量,短板所在的指针须移动。

    1. class Solution:
    2. def maxArea(self, height: List[int]) -> int:
    3. # vol = (j - i) * min(height[j], height[i])
    4. # max(vol)
    5. max_vol = 0
    6. i = 0
    7. j = len(height) - 1
    8. while i < j:
    9. vol = (j - i) * min(height[j], height[i])
    10. if vol >= max_vol:
    11. max_vol = vol
    12. if height[j] > height[i]:
    13. i += 1
    14. else:
    15. j -= 1
    16. return max_vol
    1. class Solution:
    2. def maxArea(self, height: List[int]) -> int:
    3. # area = min(a_j, a_i) * (i - j)
    4. # min(a_j, a_i) * abs(a_i - a_j)
    5. i, j = 0, len(height) - 1
    6. max_capacity = 0
    7. while i < j:
    8. cur_capacity = (j - i) * min(height[j], height[i])
    9. # 容积受到短板影响, 前后指针比较,移动较短的指针
    10. if height[i] < height[j]:
    11. i += 1
    12. else:
    13. j -= 1
    14. max_capacity = max(cur_capacity, max_capacity)
    15. return max_capacity