面试经典150题 day28
题目来源
我的题解
方法一 双指针
使用两个指针left和right,初始分别指向最左侧和最右侧,然后每次移动矮的一侧。存水量=Math.min(height[left],height[right])*(right-left)
时间复杂度 :O(n)
空间复杂度:O(1)
java
public int maxArea(int[] height) {
int left=0,right=height.length-1;
int res=0;
while(left<right){
int t=Math.min(height[left],height[right])*(right-left);
res=Math.max(res,t);
if(height[left]<height[right]){
left++;
}else{
right--;
}
}
return res;
}
有任何问题,欢迎评论区交流,欢迎评论区提供其它解题思路(代码),也可以点个赞支持一下作者哈😄~