LeetCode 11

https://leetcode.cn/problems/container-with-most-water/description/

难度:中等

高频面试题汇总:https://www.yuweihung.com/posts/2025/lc-hot/

相向双指针。容器的容积是由左右两端较低的一方决定的。如果保留较低的一端,另一端相向移动。假设新的另一端比他要高,那么最低的还是他,宽度变小了,容积也变小了。假设另一端比他还低,那么宽度变小了,高度也变小了,容积还是变小。因此如果要得到更大的容积,就不能保留较低的一端,需要移动他。

时间复杂度:O(n),其中 n 为 height 的长度。

空间复杂度:O(1),仅用到若干额外变量。

class Solution {
public:
    int maxArea(vector<int>& height) {
        int ans = 0, left = 0, right = height.size() - 1;
        while (left < right) {
            int area = (right - left) * min(height[left], height[right]);
            ans = max(ans, area);
            height[left] < height[right] ? left++ : right--;
        }
        return ans;
    }
};