这题用暴力像easy
就是第二种解法没看见过
Solution 1: 暴力解法
class Solution {
public int maxArea(int[] height) {
int max=0;
int area=0;
for(int i=0;i<height.length;i++){
for(int j=i+1;j<height.length;j++){
area=Math.min(height[i],height[j])*(j-i);
if(area>max){
max=area;
}
}
}
return max;
}
}
Solution 2: 实际应用了 a+b=定值 求a*b最大的原理
让两端高度基本差不多,就能抵消宽度减小的影响。
想想也是,宽度是按1递减的,递减速度很慢,两端高上去了,实际还是面积变大了
class Solution {
public int maxArea(int[] height) {
int max=0;
int i=0,j=height.length-1;
while(i<j){
max=Math.max(max,Math.min(height[i],height[j])*(j-i));
if(height[i]<height[j]){
i++;
}else{
j--;
}
}
return max;
}
}