思路
双指针:首先令i=0,j=height.length-1,选取短板(即Math.min(height[i],height[j])),然后将短板向内移动,直达i>=j即可得到答案。
解题过程
短板向内移动:水的容量可能增大
长板向内移动:水的容量不可能增大
所以只需要维护一个最大值max,通过短板的不断内移,维护max=Math.max(max,Math.min(height[i],height[j])*(j-i))即可。
Code
class Solution {
public int maxArea(int[] height) {
int len=height.length;
int i=0;
int j=len-1;
int max=Math.min(height[i],height[j])*(j-i);
while(i<j){
if(height[i]<=height[j]){
i++;
max=Math.max(max,Math.min(height[i],height[j])*(j-i));
}else{
j--;
max=Math.max(max,Math.min(height[i],height[j])*(j-i));
}
}
return max;
}
}
作者:菜卷
链接:https://leetcode.cn/problems/container-with-most-water/solutions/2897259/sheng-zui-duo-shui-de-rong-qi-by-ashi-ji-7w2y/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。