/* All Contributors (C) 2020 */
package io.github.dreamylost;

/**
 * 盛最多水的容器
 *
 * <p>给定 n 个非负整数 a1，a2，...，an，每个数代表坐标中的一个点 (i, ai) 。 在坐标内画 n 条垂直线，垂直线 i 的两个端点分别为 (i, ai) 和 (i,
 * 0)。找出其中的两条线，使得它们与 x 轴共同构成的容器可以容纳最多的水。
 *
 * <p>说明：你不能倾斜容器，且 n 的值至少为 2。
 *
 * @author 梦境迷离
 * @time 2018-09-23
 */
public class Leetcode_11_Double_Pointer {

    /**
     * @param height
     * @return
     */
    public int maxArea(int[] height) {
        int left = 0, right = height.length - 1;
        int maxArea = 0;
        while (left < right) {
            maxArea = Math.max(maxArea, Math.min(height[left], height[right]) * (right - left));
            if (height[left] < height[right]) left++;
            else right--;
        }

        return maxArea;
    }
}
