• Leetcode刷题详解——盛最多水的容器


    1.题目链接:盛最多水的容器

    2.题目描述:

    给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0)(i, height[i])

    找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。

    返回容器可以储存的最大水量。

    **说明:**你不能倾斜容器。

    示例 1:

    img

    输入:[1,8,6,2,5,4,8,3,7]
    输出:49 
    解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。
    
    • 1
    • 2
    • 3

    示例 2:

    输入:height = [1,1]
    输出:1
    
    • 1
    • 2

    提示:

    • n == height.length
    • 2 <= n <= 105
    • 0 <= height[i] <= 104

    3.算法思路:

    设两个指针leftright分别指向容器的左右两个端点,容器的左边为height[left],容器的右边为height[right],当左边小于右边时进入循环,用ret存储并更新最大的容积,直到leftright相遇循环结束,返回容积的最大值

    4.算法流程图:

    请添加图片描述

    5.C++代码实现

    //1
    class Solution {
    public:
        int maxArea(vector& height) {
            int left=0,right=height.size()-1,ret=0;
            while(left& height) {
            int left = 0;
            int right = height.size() - 1;
            int ret = 0;
            
            while (left < right) {
                int h = min(height[left], height[right]); // 找到当前左右指针所指的较小高度
                int w = right - left; // 计算当前宽度
                int area = h * w; // 计算当前面积
                
                ret = max(ret, area); // 更新最大面积
                
                if (height[left] <= height[right]) {
                    left++; // 左指针右移一位
                } else {
                    right--; // 右指针左移一位
                }
            }
            
            return ret;
        }
    };
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
  • 相关阅读:
    客观题:Android基础【基础题】
    Mysql主从复制数据一致性校验
    IP数据报格式
    十三、泛型
    imx6ull - 制作烧录SD卡
    Java-网络编程(TCP-UDP)
    一个依赖搞定Spring Boot 配置文件脱敏
    如何在Docker容器中运行和使用dnsmasq?
    操作系统高频面试题(2022最新整理)
    华为云云耀云服务器L实例评测|部署在线思维导图 SimpleMindMap
  • 原文地址:https://blog.csdn.net/weixin_51799303/article/details/133815496