传送门:盛水最多的容器
思路
显然一开始我们需要考虑整个水箱,因此可以考虑使用两个指针指向 [1, n]。
而指针移动的逻辑也很简单,大家都知道木桶效应,那么我们肯定是需要将小的那个指针赶紧移走,才有可能获得更大的值。
代码
class Solution {
public:
int maxArea(vector<int>& height) {
int l = 0, r = height.size() - 1;
int ans = 0;
while (l != r) {
ans = std::max(ans, std::min(height[r], height[l]) * (r - l));
if (height[r] > height[l]) l ++;
else r --;
std::cout << l << " " << r << "\n";
}
return ans;
}
};