描述
分析
两个板之间能盛下的水的量,取决于短板。
想让两个板之间能盛下更多的水,需要改变短板的长度。
就像水桶效应:
那么用两个指针指向容器的两个板,然后每次移动较短的板即可。
移动较短的板,可能会增大容积,移动较长的板,一定会减小容积。
代码
class Solution {
public int maxArea(int[] height) {
int i = 0, j = height.length -1;
int res = 0;
while(i< j) {
// 盛水的体积,取决于较短的板
res = Math.max(res, Math.min(height[i], height[j]) * (j-i));
// 移动较短的板
if(height[i] > height[j]) {
j--;
} else {
i++;
}
}
return res;
}
}