11. Container With Most Water
需要变量:i,j
指针代表宽度,局部变量area = (j - i) * min(height[i], height[j])
当前计算的面积,全局变量result
存放最大面积。i
前进的条件是height[i] < height[j]
,因为要向右边试探有没有更大的高度,然后消除当前的高度最小值,保留高度最大值。
时间复杂度O(n)
public int maxArea(int[] height) {
int result = 0;
int i = 0, j = height.length - 1;
while (i < j) {
int area = (j - i) * Math.min(height[i], height[j]);
result = Math.max(result, area);
if (height[i] < height[j]) {
i++;
} else {
j--;
}
}
return result;
}