已知:有n个非负整数数a1,a2,a3,a4,a5……an,每个数都代表一个一个点(i,ai),其中ai是点i的高度,有n个垂线,每个垂线的高度是ai,位于x轴i上,一个容器由x轴和任意两个垂线组成,求最大的容器能装多少水?
分析,这个题目其实不是很难,如果使用2层for循环,肯定能做出来,但是如果加深点难度,我们这么能在O(n)的时间内,找到答案了,发散思维了,对了,就是从两头开始找,那头的高度小,那个往前行走,这样,保存,表示的最大的容器,就是答案了
public int maxArea(int[] height) {
int length=height.length;
int low=0;int high=length-1;
int max=0;
while(low<high){
max=Math.max(max,(high-low)*Math.min(height[low],height[high]));
if(height[low]<height[high]){
low++;
}else{
high--;
}
}
return max;
}