uacs2024

导航

leetcode 11. 盛最多水的容器

11. 盛最多水的容器

原来想得太复杂了。后来看了灵神  leetcode1.两数之和  leetcode15.三数之和 在b站上的讲解视频,就感觉有点启发,稀里糊涂就做出来了

class Solution {
public:
    int maxArea(vector<int>& height) {
        // 定义左右指针,分别指向数组的起始和末尾位置
        int left = 0, right = height.size() - 1;
        // 初始化最大面积为0
        int res = 0;
        // 当左指针小于右指针时,进入循环
        while (left < right) {
            // 计算当前左右指针所形成的矩形的面积,并与之前的最大面积进行比较,取较大值
            // (right - left) 是底边长度,min(height[left], height[right]) 是高度(取决于较短的那条边)
            res = max(res, (right - left) * min(height[left], height[right]));
            // 如果左边的高度小于右边的高度,说明左边是限制盛水高度的瓶颈,
            // 移动左指针,尝试寻找更高的左边高度,以增加可能的面积
            if (height[left] < height[right])    ++left;
            
            // 否则,右边是限制盛水高度的瓶颈,移动右指针,尝试寻找更高的右边高度
            else    --right;          
        }
        // 返回计算出的最大面积
        return res;
    }
};

 

posted on 2025-03-15 20:19  ᶜʸᵃⁿ  阅读(13)  评论(0)    收藏  举报