题目



题解
暴力解
int maxArea(vector<int>& height) {
int n = height.size();
int max = 0;
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
int area = std::min(height[i], height[j]) * (j - i);
max = std::max(area, max);
}
}
return max;
}
双指针

class Solution {
public:
int maxArea(vector<int>& height) {
int max = 0;
int l = 0,r = height.size()-1;//两个指针
while(l < r){
int area = std::min(height[l],height[r]) * (r-l);
max = std::max(max,area);
//短的向长的移动
if(height[l] < height[r]) l++;
else r--;
}
return max;
}
};