LeetCode-11-盛最多水的容器

LeetCode - 11.盛最多水的容器 此时容器的底是最大的,接下来随着指针向内移动,会造成容器的底变小,在这种情况下想要让容器盛水变多,就只有在容器的高上下功夫。这种情况下我们想要让指针移动后的容器面积增大,就要使移动后的容器的高尽量大,所以我们选择指针所指的高较小的那个指针进行移动,这样做可以保留较高柱子的边界,同时增加找到更高柱子并提升容器高度的可能性。利用双指针的思想,定义一个left和reght,left指向首部,right指向尾部,计算当前两个指针所对应的高度构成容器的体积。持续进行容积的计算,并根据上述逻辑移动指针,直到。 阅读详情

题目

来源:LeetCode.

给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。
在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。
找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。

示例 1:
在这里插入图片描述

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

示例 2:

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

示例 3:

输入:height = [4,3,2,1,4]
输出:16

示例 4:

输入:height = [1,2,1]
输出:2
提示:
n = height.length
2 <= n <= 3 * 104
0 <= height[i] <= 3 * 104

接下来看一下解题思路:

思路(双指针):

    这道题要计算出坐标轴最大的面积,取决于左右边界的值和边界的距离;
    所以可以采用双指针来解决;
    初始时左右指针分别位于左右边界,然后比较左右边界的值;
    为了保证面积最大,每次移动小的那一个边界,保留值大的边界;
    然后计算当前的面积,存储最大的面积;
    最后返回这个最大面积即可;
    临界条件是左右边界相遇;

public static int maxArea(int[] height) {
        if (height.length < 2) {
            return height[0];
        }

        int i = 0;
        int j = height.length - 1;

        int sum = 0;

        while (i != j) {
            // 最大面积为 最小边界乘以左右边界的长
            int record = Math.min(height[i], height[j]) * (j - i);
            // 记录最大值
            sum = Math.max(record, sum);
            // 每次移动左右边界相对较小的那个
            if (height[i] > height[j]) {
                --j;
            } else {
                ++i;
            }
        }
        return sum;
    }
}
总结

    时间复杂度 O(n),双指针总计最多遍历整个数组一次;
    空间复杂度 O(1),只需要额外的常数级别的空间;

LeetCode 11 - 盛最多水的容器 LeetCode 11 是一道经典的双指针问题,考察程序设计中的优化方法以及逻辑推导能力。题目核心是找到由两条柱子围成的、最多水的容器。以下是详细解法、变体和快速 AC 总结。给定一个长度为n的数组height,数组中每个元素表示一个高度。每对(i, j)组合能形成一个容器,其容积由两条柱子之间的和要求返回能够容纳最多水的容器的。 阅读详情

相关推荐

【中等】力扣算法题解析LeetCode11:盛最多水的容器

采用双指针法高效求解容器盛水问题。初始化左右指针分别指向数组两端,计算当前容量并更新最大值。关键策略是移动高度较小的指针,以寻找潜在更大容量的组合。算法时间复杂度为O(n),空间复杂度O(1)。Java实现通过循环比较和指针移动,最终返回最大储水量。

ylumwd的博客 576

力扣【LeetCode】—— 11. 盛最多水的容器【java】

题目地址:https://leetcode-cn.com/problems/container-with-most-water/ 题目:  给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 说明:  不能倾斜容器。 示例: 解法一(暴力求解):  思路:遍历计算最大值,两层循环,选中一条垂直线,然后根据这

眉头的骰 888

STM32MP157+AD7606BSTZ四通道IEPE传感器采集方案实战(附完整电路图)

本文详细介绍了基于STM32MP157和AD7606BSTZ的四通道IEPE传感器采集方案,涵盖硬件电路设计、软件驱动开发及系统性能优化。通过精确的恒流源设计和同步采样技术,实现高精度振动信号采集,适用于工业振动监测等应用场景。

weixin_42713608的博客 700

11. 盛最多水的容器 - 力扣(LeetCode)

解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。因为 height[left] == height[right],right 减少到 5。因为 height[left] > height[right],right 减少到 7。因为 height[left] > height[right],right 减少到 4。因为 height[left] > height[right],right 减少到 1。面积 = min(1, 7) * 8 = 1 * 8 = 8。

q1111111da的博客 887

BarTender破解版风险与低成本正版替代方案全解析

在工业自动化和企业信息化领域,标签打印与条形码技术是连接物理世界与数字系统的关键环节。其核心原理是通过软件驱动打印设备,将可变数据(如序列号、生产日期)与固定模板结合,生成可追溯的标识载体。这项技术的价值在于实现生产流程可视化、供应链管理精细化与质量控制自动化,广泛应用于仓储物流、制造执行、零售门店等场景。然而,软件授权合规性常成为企业成本控制的痛点,尤其面对BarTender这类行业标准工具时,部分用户可能寻求破解方案。但破解版软件通常采用内存补丁、伪造许可证等技术手段绕过验证,不仅存在法律风险,更会引发

weixin_32736961的博客 727

jaka+realsense+aruco+手眼标定(python)

第二次重建了项目的手眼标定部分……有很多第一次记录遗漏的地方,在此补充。

drivenzyw的博客 2122

【LeetCode力扣】11. 盛最多水的容器 (中等)

这道题最优的方法就是用双指针,我们可以用指针left和指针right分别指向数组height[ ]的第一个数和最后一个数

m0_65277261的博客 898

RK3588+TRL8367s 四网口千兆交换机配置与优化实战

本文详细介绍了基于RK3588高性能SoC与TRL8367s千兆交换芯片构建四网口交换机的完整实战流程。内容涵盖硬件连接、设备树配置、内核驱动加载、性能优化及常见问题排查,重点解析了RGMII时序调试、DSA架构配置等关键步骤,为嵌入式网络设备开发提供实用指南。

weixin_29266647的博客 672

【力扣LeetCode】11 盛最多水的容器

题目描述(难度中) 给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 说明:你不能倾斜容器,且 n 的值至少为 2。 图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够...

Jiewang的博客 306

Livox-avia+FAST-LIO麻瓜使用教程

激光雷达 SLAM Fastlio 安装

aaaaaaaaaww12的博客 3675

适航规章、标准,书籍资料下载汇总(更新中)

以下是一些收集到的适航相关的资料,分享给大家。(如果没有你想要的资料,请留言,等找到会及时更新!

qq_41854911的博客 2545

LeetCode 11. 盛最多水的容器

假设最优解的两个值为图中的两条竖线,我们的指针从左右两侧向中间移动,假设现在左边的指针先移动到了最优解的前面的竖线,现在要证明:如果左边指针先到达最优解的边界了的话,右边每次指向竖线的高度都严格小于左边指向的竖线。由此得到的结论是,假设左边先找到了最优解,那么右边的高度必然是严格小于左边界的。木桶原则是说一个水桶无论有多高,它盛水的高度取决于其中最低的那块木板。整个题目可以理解为:最好要早相遇,否则在晚相遇的基础上,每次都要找最好的。本题使用双指针的做法, 指针移动过程中会天然地造成木桶的“底”不断变小。

grq的博客 1880

图神经网络与大模型融合的理论综述:架构、机制与未来方向

然而,它们普遍缺乏对图结构数据的原生支持,无法直接处理边、节点之间的拓扑关系,这限制了其在关系密集型任务中的表现 [23]。2020年发布的BERT [16] 开启了自监督预训练时代,而2021年后,T5 [17]、PaLM [18]、LLaMA [19] 等模型相继推出,参数规模突破千亿级,展现出惊人的上下文学习(In-context Learning)与链式推理(Chain-of-Thought)能力 [20]。例如,将医学影像作为图节点,结合病理报告文本,实现更精准的疾病诊断 [58]。

andeyeluguo的博客 295

力扣LeetCode第11题盛最多水的容器

力扣LeetCode第11题盛最多水的容器

weixin_44061444的博客 784

Unity零基础到入门 ☀️| 基础知识入门篇章,看完就可以做游戏啦! | 寻找C站宝藏

Unity入门基础知识。本篇文章介绍了关于Unity入门的一些基础知识,包括基本概念和使用实例。简单易上手,轻松实现Unity入门操作!

努力前行,总会成为自己心中的那道光 1万+

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

LeetCode(力扣)第11题:盛最多水的容器(C语言版)

摘要:本文详细解析了如何使用C语言高效解决"盛最多水容器"问题。通过双指针法(Two Pointers Technique),在O(n)时间内找到最大面积:初始化左右指针,计算当前面积并移动较短的指针,同时更新最大面积。关键点在于移动短边可能获得更高高度,而避免不必要的计算。C语言实现注重数组直接访问、变量缓存等优化,确保高效性。测试用例验证了算法的正确性,适用于大规模数据。该方法体现了贪心策略和C语言底层优化的结合,具有O(n)时间复杂度和O(1)空间复杂度。

weixin_74345888的博客 1886

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

JavaScript实现 盛最多水的容器--力扣(leetcode 11)

目录 1 问题 2 输入输出 3 解法 1)暴力法 2)双指针方法 4 代码 1 问题 https://leetcode-cn.com/problems/container-with-most-water/ 给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点(i,ai) 。在坐标内画 n 条垂直线,垂直线 i的两个端点分别为(i,ai) 和 (i, 0)。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水 说明:你不能倾斜容器,且n的值...

bailizx 695

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

leetcode11盛最多水的容器

双指针是一种常用的算法技巧,特别适用于数组和链表等线性数据结构。它通过使用两个指针(或索引)来迭代或扫描数据结构,常用于以下几类问题:对撞指针(Two Pointers Technique):两个指针分别从数据结构的两端向中间移动,直到它们相遇。这种方法常用于求解数组中的特定对(例如,两数之和问题、盛最多水的容器问题)。快慢指针(Tortoise and Hare Algorithm):一个指针每次移动一步,另一个指针每次移动两步。这种方法常用于检测链表中的环或找到链表的中间节点。

weixin_43683432的博客 1186

LeetCode高频题11:盛最多水的容器

1)LR从两头往中间凑,一定在考虑a最大的情况下,两根板子尽可能高的最优解先更新给max了 2)当L小,让L探索有没有更高的瓶颈,R也类似,总之保证底边a最大的可能性下,去探索更高的瓶颈,这样算出来的水量是最好的 3)笔试求AC,可以不考虑空间复杂度,但是面试既要考虑时间复杂度最优,也要考虑空间复杂度最优。...

weixin_46838716的博客 1229

Leetcode 11. 盛最多水的容器

Leetcode 11. 盛最多水的容器1、问题分析2、问题解决3、总结 1、问题分析 题目链接:https://leetcode-cn.com/problems/container-with-most-water/ 具体思路为: 1、分别从左右节点 往中间推,知道找到某个节点的高度 大于等于当前节点的高度 2、如从左往右推 循环结束的地方就是 当前节点高度能够到达的左边最远距离 3、从右往左推 原理类似 最坏的情况一定在当前节点全部停止   代码我已经进行了详细的注释,理解应该没有问题,读者可以作为参

珍惜 8818

leetcode11. 盛最多水的容器(java)

有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i])。解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。链接:https://leetcode.cn/problems/container-with-most-water。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。输入:[1,8,6,2,5,4,8,3,7]输入:height = [1,1]说明:你不能倾斜容器。

SP_1024的博客 1106

leetcode11. 盛最多水的容器,双指针法

leetcode11.盛最多水的容器,双指针法

热爱C++和golang的学生 1387

11. 盛最多水的容器【 力扣(LeetCode) 】

给定一个长度为 n 的整数数组 height。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i])。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。说明:你不能倾斜容器。

yyh520025的博客 781

【LeetCode】11. 盛最多水的容器

Python微信订餐小程序课程视频 https://edu.youkuaiyun.com/course/detail/36074 Python实战量化交易理财系统 https://edu.youkuaiyun.com/course/detail/35475 11. 盛最多水的容器 知识点:双指针 题目描述 给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找

虚幻私塾 1823

力扣(LeetCode)100题:11.盛最多水的容器

本文讨论了LeetCode"盛最多水的容器"问题的三种解法。初始暴力解法(双重循环)时间复杂度高(O(n²)),随后优化为双指针解法(O(n)):从数组两端向中间移动,每次移动较矮的指针并计算当前面积,保留最大值。官方解法思路相同,代码更简洁。双指针解法通过每次排除不可能成为最优解的情况,极大提升了效率,是解决此类问题的典型方法。

sweet_ran的博客 299

LeetCode第11题_盛最多水的容器

这是一道经典的双指针题目:理解面积计算规则理解指针移动策略理解为什么这种策略是正确的优化思路:记录最大高度来跳过不必要的计算提前结束条件的判断关键点:双指针的移动策略面积计算的数学原理优化的判断条件。

qq_40263592的博客 1178
上一篇: Git常用命令
下一篇: LeetCode-12-整数转罗马数字
CodAlun
博客等级 码龄8年 46粉丝 96原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值