LeetCode 11 Container With Most Water
思路
Container的大小由两条边的距离和较短的那条line的长度决定。维护两个变量left和right,分别表示左边的line和右边的line的index。因此,Container的大小为(right - left) * min(height[left], height[right])。从两边向中间遍历,因此(right - left)是逐渐变小的。在这样的条件下,只有min(height[left], height[right])变大,Container才有可能变大。
代码
class Solution {
public:
int maxArea(vector<int>& height) {
int rs = 0;
int i = 0, j = height.size() - 1, h;
while (i < j) {
h = min(height[i], height[j]);
rs = max(rs, h * (j - i));
while (height[i] <= h && i < j) ++i;
while (height[j] <= h && i < j) --j;
}
return rs;
}
};