目录

1.盛最多水的容器


1.盛最多水的容器

        这道题可以通过双指针来解决,我们分别用left和right来指向左右的起始位置,计算出当前的数值,同时移动left和right值较小的那一个,正如木桶原理,能接水的多少是由短的那一块木板决定的,所以我们通过移动较小值来不断更新,直到取到最大值

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

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐