如果选择固定一根柱子,另外一根变化,水的面积会有什么变化吗?推测结论:
1.当前柱子是最两侧的柱子,水的宽度 为最大,其他的组合,水的宽度都比这个小。左边柱子较短,决定了水的高度为 3。
2.如果移动左边的柱子,新的水面高度不确定,一定不会超过右边的柱子高度 7。
3.如果移动右边的柱子,新的水面高度一定不会超过左边的柱子高度 3,也就是不会超过现在的水面高度
结论:
由此可见,如果固定左边的柱子,移动右边的柱子,那么水的高度一定不会增加,且宽度一定减少,所以水的面积一定减少。这个时候,左边的柱子和任意一个其他柱子的组合,其实都可以排除了。也就是我们可以排除掉左边的柱子了
削减搜索空间的原理相通,解题思路实际上是双指针解法
public int maxArea(int[] height) {
int res=0;
int i=0;
int j=height.length-1;
while(i<j){
int ares=(j-i)*Mathmin(height[i],height[j]);
res=Mathmax(res,ares);
if(height[i],height[j]){
i++;
}
else{
j--;
}
}
return res;
};