给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。
找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。
返回容器可以储存的最大水量。
说明:你不能倾斜容器。
方法一:暴力解法(果然超时间了
class Solution {
public:
int maxArea(vector<int>& height) {
int maxc = 0;
int m = height.size();
for(int i =1;i<m;i++){
for(int j=0;j<i;j++){
int curc = min(height[i],height[j]) * (i-j);
if(curc>maxc){
maxc = curc;
}
}
}
return maxc;
}
};
方法二:双指针,左右两个指针。(越来越行了
public:
int maxArea(vector<int>& height) {
int m = height.size();
int left = 0;
int right = m-1;
int maxc = 0;
while(left<right){
int curc = min(height[left],height[right]) * (right-left);
if(curc>maxc){
maxc = curc;
}
if(height[right]<height[left]){
right = right-1;
}else{
left = left+1;
}
}
return maxc;
}
};