题目11 盛水最多的容器
n条线垂线,找出其中2条,使得他们与x轴构成的图形面积最大
求最大面积是多数
height : [1,8,6,2,5,4,8,3,7]
49
height = [1,1]
1
思路
1、暴力循环. 效率太低了。
int tmpMax
for i
for j=i+1
result=(j-i)*height
2、双指针,一次遍历,
left=0;
right=len-1
由于宽度–,肯定移动短的,这样就有机会找到更长的。
题解
public int maxArea(int[] height) {
int tempMax = Integer.MIN_VALUE;
int left=0;
int right=height.length-1;
while (left<right){
tempMax=height[left]<height[right]?
Math.max(tempMax,(right-left)*height[left++]):
Math.max(tempMax,(right-left)*height[right--]);
}
return tempMax;
}
复杂度
时间负责度:O(n)
空间复杂度:O(1)