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

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

题目

盛最多水的容器

思路1(暴力破解)

  • 迭代每两个组合
  • 找到最大值并输出

题解

class Solution {
    public int maxArea(int[] height) {
        int ans= 0;
        for (int i = 0; i < height.length - 1; i++) {
            for (int j = i + 1; j < height.length; j++) {
                // 得到最都短的垂直线
                int min = Math.min(height[i], height[j]);
                // 计算最大的容量
                ans= Math.max(ans, min * (j - i));
            }
        }
        return ans;
    }
}

复杂度分析

  • 时间复杂度:O(N²)
  • 空间复杂度:O(1)

思路2(双指针)

  • 从两边开始向内移动,计算两边组合水容量
  • 每次比较只移动短边,等长移动任意一边,当两边重合时结束

题解

public class Solution {
    public int maxArea(int[] height) {
        int l = 0, r = height.length - 1;
        int ans = 0;
        while (l < r) {
            // 计算两边组合的水容量
            int area = Math.min(height[l], height[r]) * (r - l);
            // 取较大一方
            ans = Math.max(ans, area);
            // 移动短边下标,等长则移动左边
            if (height[l] <= height[r]) {
                ++l;
            }
            else {
                --r;
            }
        }
        return ans;
    }
}

总结

如果我们移动数字较大的那个指针,那么前者「两个指针指向的数字中较小值」不会增加,后者「指针之间的距离」会减小,那么这个乘积会减小。
因此,我们移动数字较大的那个指针是不合理的。因此,我们移动 数字较小的那个指针。

复杂度分析

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

相关推荐

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

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

ylumwd的博客 576

C语言力扣第十一题之求水桶最大容量。(两种方法)

给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是(i, 0) 和(i, height[i]) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。说明:你不能倾斜容器。示例 1:输入:[1, 8, 6, 2, 5, 4, 8, 3, 7] 输出:49 解释:图中垂直线代表输入数组[1, 8, 6, 2, 5, 4, 8, 3, 7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。示例 2:输入:height

欢迎交流! 954

H3C设备VRF配置实战:5步搞定多业务网络隔离(附排错技巧)

本文详细介绍了在H3C设备上配置VRF(虚拟路由转发)实现多业务网络隔离的实战方法。通过五步配置流程,从创建VPN-instance、绑定接口到配置独立路由表,帮助网络工程师在单台设备上构建逻辑隔离的企业级网络,并分享了高级路由配置与常见排错技巧。

gold8的专栏 936

力扣【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

STM32+ESP8266接入OneNet物联网平台全流程

MQTT协议是物联网设备与云平台通信的主流轻量级消息传输标准,其发布/订阅模型天然适配嵌入式资源受限场景;OneJSON作为中国移动OneNet平台定制的数据格式,在标准JSON基础上精简Schema、降低解析开销,显著提升STM32等MCU的处理效率。该技术组合兼顾安全性、低功耗与工程可量产性,广泛应用于环境监测、智能仪表、工业传感器等远程数据采集系统。实际落地需协同完成云平台物模型定义、Token动态认证、MQTT Topic严格构造、AT指令可靠交互及单总线传感器数据融合等关键环节。本文以DS18B2

u5v6w7的博客 1119

Python+Seaborn可视化:双因素方差分析结果这样呈现更专业

本文详细介绍了如何利用Python中的Seaborn和statsmodels库,专业地执行并可视化双因素方差分析结果。通过模拟实验数据,演示了从模型构建、统计检验(包括交互作用分析)到诊断验证的全流程。重点展示了如何使用Seaborn绘制交互效应图、组合分布图及热图,将复杂的统计结果转化为直观、富有洞察力的可视化图表,助力科研论文与商业报告的专业呈现。

weixin_29274969的博客 136

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

在macOS上使用GitHub的超详细指南

GitHub:免费的远程仓库,可用来托管自己的开源项目。它利用了Git强大的克隆和分支功能,让我们参与别人的开源项目和让别人参与自己的开源项目变得简单高效。

Mars的博客 3390

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

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

m0_65277261的博客 898

串口接收完整一帧数据包的3种方法

本文介绍3种使用串口接受一帧完整数据包的方法,串口接收数据是字节接收的,串口每接收1字节数据,产生一个串口中断,我们在中断中将接收到的数据存放到buf中进行保存,但是数据的发送和接收都是按照帧为单位进行传输的,因此我们要在接收数据的同时判断当前接收的数据是否是完整的一帧。 一般串口完整数据帧的定义:帧头(2字节,例如AA、BB) + 数据长度(2字节) + 数据+ CRC16校验(2字节) + 帧尾(2字节) 帧头、帧尾表示一帧数据的开始和结尾,数据长度表示当前数据帧中负载数据大小,CRC16校...

爱吃鱼的猫 6万+

【AI for Medecine】吴恩达医学图像AI专项课程(诊断、预测、治疗)

近期需要简单了解AI4Science上的一些应用,看到吴恩达大佬的专项课程,于是开始来个“全面”的了解--医学人工智能(诊断、预测、治疗)。

图挖掘领域,新晋砖家 ☞ 未来可期,欢迎和静静一起学习交流吖 765

【力扣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

S32DS S32K312 LPSPI + DMA配置异步SPI

配置DMA->Specific Configuration->Dma Logic Channel->Configuration->Global。SpiPhyUnitMapping:将该配置Mapping到某一路Spi,此工程配置为Spi1,遂选择LPSPI_1。配置的该路SPI的片选ID,此处ID对应配置Pin脚时lpspi_pcs后的下表(本工程此处为PCS3)配置该路SPI对应的SPI硬件单元ID,本工程配置为Lpspi1,因此配置为CSIB1。首先配置SPI的Pin脚,此处使用的是LPSPI_1。

希望我的博客,能帮上你解决学习中工作中所遇到的问题 2361

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

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

weixin_44061444的博客 784

先进封装类别分析与典型案例

当制程微缩逼近物理极限、单颗大芯片(reticle limit)面积受限于光罩尺寸,且逻辑、存储、射频、传感等功能无法用同一套工艺最经济地制造时,性能增益的来源从 "晶体管密度" 转向 "互连密度"。先进封装的本质,是在芯片外部用更短、更密、更宽的路径把多个裸 die(die)互连起来,换取更高带宽、更低延迟、更小体积和异构集成能力。行业通常按划分为 2D、2.5D、3D、扇出、SiP 五大谱系,Chiplet/UCIe 则是贯穿其上的设计方法论,玻璃基板、共封装光学(CPO)是正在成型的新分支。

0 28

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

LeetCode 11. 盛最多水的容器

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

grq的博客 1880

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

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

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

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

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

weixin_74345888的博客 1886

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

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

weixin_46838716的博客 1229

leetcode11盛最多水的容器

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

weixin_43683432的博客 1186

Leetcode 11. 盛最多水的容器

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

珍惜 8818

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

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

热爱C++和golang的学生 1387

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

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

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

yyh520025的博客 781

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

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

虚幻私塾 1823

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

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

qq_40263592的博客 1177
上一篇: Shiro学习_02(认证)
下一篇: 二元运算符
hanlin-hl
博客等级 码龄8年 3粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hanlin-hl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值