public static void main(String[] args) {
int[] height = {3,8,2,2,8};
int area = maxArea(height);
System.out.println(area);
}
/**
*求数组能组成的最大面积(类似于装水的桶)
*/
public static int maxArea(int[] height) {
int area = 0;
int left = 0;
int right = height.length - 1;
/**
* 面积大小取决于最小的一个
* 总是移动小的一条边,如果移动大边,则新边可能变大也可能变小,但总体是变小的
* 如果移动小边,则新边的高度可能变大,导致整体变大
* 如果相同,则单移动一边整体还是变小,同时移动两边可能变大
*/
while (left < right){
area = Math.max(area,(right - left) * Math.min(height[left],height[right]));
if(height[left] > height[right]){
right--;
}else if(height[left] < height[right]){
left++;
}else {
left++;
right--;
}
}
return area;
}
一维数组index为宽值为高求最大面积
最新推荐文章于 2023-04-17 15:19:31 发布