给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。画 n 条垂直线,使得垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。
注意:你不能倾斜容器,n 至少是2。
[1,3,2]->2
class Solution {//高度取决于最短边,从两边移动指针降低复杂度
public static int min(int a,int b)
{
if(a<b)
return a;
else
return b;
}
public static int max(int a,int b)
{
if(a>b)
return a;
else
return b;
}
public int maxArea(int[] heights) {
int i = 0;
int j = heights.length - 1;
int result = 0;
while(i < j)
{
int area = (j - i) * min(heights[i], heights[j]);
result = max(result, area);
if (heights[i] <= heights[j])
{
i++;
}
else
{
j--;
}
}
return result;
}
}