题目链接:https://leetcode-cn.com/problems/container-with-most-water/
双指针法,初始状态下左指针在最左,右指针在最右,此时宽度最大。缩小宽度时,我们选择较短的一边进行移动,因为面积取决于双端点中较短的那个。
代码如下:
class Solution {
public:
int maxArea(vector<int>& height) {
int len = height.size();
int l = 0, r = len - 1;
int res = min(height[l], height[r]) * (r - l);
while(l < r) {
if(height[l] > height[r]) {
r--;
} else {
l++;
}
int area = min(height[l], height[r]) * (r - l);
printf("l = %d, r = %d\n", l, r);
res = max(res, area);
}
return res;
}
};