题意分析
给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。画 n 条垂直线,使得垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的矩形可以容纳最多的水。
注意:你不能倾斜容器,n 至少是2
比较容易想到的解法,0(n2) 遍历全部
-
class Solution { public int maxArea(int[] height) { int tiji= 0; int max = 0; for(int i=0 ; i<height.length ; i++){ for(int j=1 ; j<height.length ; j++){ tiji= (height[i] < height[j]) ? ((j-i)*height[i]) :((j-i)*height[j]); if(max<tiji){ max=tiji; } } } return max; } }
class Solution {
public int maxArea(int[] height) {
int tiji= 0;
int max = 0;
int low = 0;
int high = height.length - 1;
while(low < high){
tiji = (high - low) * Math.min(height[low], height[high]);
max = (max>tiji) ? (max) :(tiji) ;
if(height[low] < height[high])
low++;
else high--;
}
return max;
}
}