盛水最多的容器
解题思路:
首先想到的暴力法,两层for循环逐一找到最大值。
其次更优化的双指针法:一个从头,一个从尾,计算,每次找出值最小(即容器边最低)的一边前进,用max记录下最大值。
代码:
public static int MaxArea(int[] height)
{
int i = 0;
int j = height.Length-1;
int max = 0;
while (i != j)
{
max = Math.Max(max, Math.Min(height[i], height[j]) * (j - i));
if (height[i] >= height[j])
j--;
else
i++;
}
return max;
}