描述
给定一个数组height,长度为n,每个数代表坐标轴中的一个点的高度,height[i]是在第i点的高度,请问,从中选2个高度与x轴组成的容器最多能容纳多少水
1.你不能倾斜容器
2.当n小于2时,视为不能形成容器,请返回0
3.数据保证能容纳最多的水不会超过整形范围,即不会超过231-1
image.png
image.png
解题思路:双指针,先从左右边界算面积,然后确定是否是最大面积,每次对比完会去舍弃最短的边
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param height int整型一维数组
* @return int整型
*/
public int maxArea (int[] height) {
// write code here
if(height.length<2){
return 0;
}
int left = 0;
int right = height.length - 1;
int maxArea = 0;
while(left < right){
int area = Math.min(height[left], height[right]) *(right - left);
maxArea = Math.max(maxArea,area);
if(height[left]<height[right]){
left ++;
}else{
right -- ;
}
}
return maxArea;
}
}
网友评论