难度:中等 题目来源:力扣(LeetCode) https://leetcode-cn.com/problems/container-with-most-water

    说明:
    给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。
    注意:你不能倾斜容器,且 n 的值至少为 2。
    image.png
    图中垂直线代表输入数组[1,8,6,2,5,4,8,7,3]。在此情况下,容器能够容纳水(蓝色部分)的最大值为49。

    示例:
    输入:[1,8,6,2,5,4,8,3,7]
    输出:49

    解法:

    1. func maxArea(height []int) int {
    2. if len(height) < 2 {
    3. return 0
    4. }
    5. maxCapacity, leftIndex, rightIndex := 0, 0, len(height)-1
    6. for leftIndex < rightIndex {
    7. leftHeight, rightHeight := height[leftIndex], height[rightIndex]
    8. minHeight := leftHeight
    9. if minHeight > rightHeight {
    10. minHeight = rightHeight
    11. }
    12. capacity := minHeight * (rightIndex - leftIndex)
    13. if capacity > maxCapacity {
    14. maxCapacity = capacity
    15. }
    16. if minHeight == leftHeight {
    17. leftIndex++
    18. } else {
    19. rightIndex--
    20. }
    21. }
    22. return maxCapacity
    23. }