给一组数组,数组长度为X轴,数组中每个元素的值为Y轴的高,求组成图形的最大面积
双重循环遍历:
class Solution {
public int maxArea(int[] height) {
int area=0;
int temp=0;
int y=0,x=0;
for(int i=0;i<height.length;i++)
for(int j=i;j<height.length;j++){
x=j-i;
y=height[i]<height[j]?height[i]:height[j];
temp=x*y;
if(temp>area)
area=temp;
}
return area;
}
}
从两边逼近:
class Solution {
public int maxArea(int[] height) {
int area=0;
int l=0,r=height.length-1;
while(l<r){
if(height[l]<height[r]){
area=Math.max(area,height[l]*(r-l));
l++;
}
else{
area=Math.max(area,height[r]*(r-l));
r--;
}
}
return area;
}
}