有两种做法,一种O(n^2),一种O(n)
提交代码O(n^2)
class Solution {
public int maxArea(int[] height) {
int maxLeft=0,maxRight=0,curArea=0,maxArea=0;
for(int i=0;i<height.length;i++) {
if(height[i]<maxLeft) continue;
maxLeft=height[i];
maxRight=0;
for(int j=height.length-1;j>i;j--) {
if(height[j]<maxRight) continue;
maxRight=height[j];
curArea=Math.min(height[i], height[j])*(j-i);
maxArea=curArea>maxArea?curArea:maxArea;
}
}
return maxArea;
}
}
运行结果
提交代码O(n)
class Solution{
public int maxArea(int[] height) {
int curArea,maxArea=0;
int i=0,j=height.length-1;
while(i<j) {
curArea=Math.min(height[i],height[j])*(j-i);
maxArea=curArea>maxArea?curArea:maxArea;
if(height[i]<height[j]) i++;
else j--;
}
return maxArea;
}
}