描述
给定一个数组height,长度为n,每个数代表坐标轴中的一个点的高度,height[i]是在第i点的高度,请问,从中选2个高度与x轴组成的容器最多能容纳多少水
1.你不能倾斜容器
2.当n小于2时,视为不能形成容器,请返回0
3.数据保证能容纳最多的水不会超过整形范围,即不会超过231-1
数据范围:
0
<
=
h
e
i
g
h
t
.
l
e
n
g
t
h
<
=
1
0
5
0<=height.length<=10^5
0<=height.length<=105,
0
<
=
h
e
i
g
h
t
[
i
]
<
=
1
0
4
0<=height[i]<=10^4
0<=height[i]<=104
如输入的height为[1,7,3,2,4,5,8,2,7],那么如下图:
示例1
输入:[1,7,3,2,4,5,8,2,7]
返回值:49
示例2
输入:[2,2]
返回值:2
示例3
输入:[5,4,3,2,1,5]
返回值:25
代码
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param height int整型vector
* @return int整型
*/
int maxArea(vector<int>& height) {
// write code here
if(height.size()<2)
return 0;
int mx=0,left=0,right=height.size()-1;
while(left<right){
mx=max(mx,min(height[left],height[right])*(right-left));
height[left]>height[right]?right--:left++;
}
return mx;
}
};