1.题目
2.思路
首先判断这是一个长*高计算最大面积max的问题
1.需要两个指针,一个放在最左边,一个放在最右边,即i=0,j=height.length()-1;
2.判断最佳高度,max_height=if(height[i]<height[j]) ?i++ : j--;注意:是(height[i++])
3.算出面积,area=(max_height*(j-i+1))
4.判断一开始设定的max=0与area大小,利用Math.max(max,area);
自己的思路:一开始没有想到是计算最大面积的问题,而且用了两个循环来表示i,j,思路错误。
3.代码
class Solution {
public int maxArea(int[] height) {
int max = 0;
for(int i = 0,j= height.length-1;i<j; ){
int minHeight = height[i] < height[j] ? height[i++] : height[j--];
int area = (j - i + 1) * minHeight;
max = Math.max(max,area);
}
return max;
}
}