当前位置: 首页 > news >正文

LeetCode 热题 100 11. 盛最多水的容器

LeetCode 热题 100 | 11. 盛最多水的容器

大家好,今天我们来解决一道经典的算法题——盛最多水的容器。这道题在LeetCode上被标记为中等难度,要求我们找到两条垂线,使得它们与 x 轴共同构成的容器可以容纳最多的水。下面我将详细讲解解题思路,并附上Python代码实现。


问题描述

给定一个长度为 n 的整数数组 height,其中 height[i] 表示第 i 条垂线的高度。你需要找到两条垂线,使得它们与 x 轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。

注意:你不能倾斜容器。

示例:

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

解题思路

核心思想
  1. 双指针法

    • 使用两个指针 leftright,分别指向数组的起始和末尾。
    • 计算当前两个指针所指向的垂线构成的容器的面积,并记录下最大的面积。
    • 移动指针的规则是:移动指向较短垂线的指针,因为只有移动较短的垂线,才有可能在后续的步骤中找到更大的面积。
  2. 面积计算

    • 容器的面积由两个指针所指向的垂线中较短的那条决定,宽度为两个指针之间的距离。

Python代码实现

def maxArea(height):left, right = 0, len(height) - 1  # 初始化双指针max_area = 0  # 记录最大面积while left < right:# 计算当前容器的面积current_area = min(height[left], height[right]) * (right - left)# 更新最大面积max_area = max(max_area, current_area)# 移动指针if height[left] < height[right]:left += 1else:right -= 1return max_area# 测试示例
print(maxArea([1,8,6,2,5,4,8,3,7]))  # 输出: 49
print(maxArea([1,1]))  # 输出: 1

代码解析

  1. 初始化指针

    • left 指向数组的起始位置,right 指向数组的末尾位置。
  2. 计算面积

    • 当前容器的面积由两个指针所指向的垂线中较短的那条决定,宽度为两个指针之间的距离。
  3. 更新最大面积

    • 每次计算完当前面积后,与之前的最大面积进行比较,更新最大面积。
  4. 移动指针

    • 根据当前两个指针所指向的垂线的高度,移动较短的垂线的指针,以期望在后续的步骤中找到更大的面积。
  5. 返回结果

    • 最终返回记录的最大面积。

复杂度分析

  • 时间复杂度:O(n),其中 n 是数组的长度。我们只需要遍历一次数组。
  • 空间复杂度:O(1),只使用了常数个额外空间。

示例运行

示例1
输入: height = [1,8,6,2,5,4,8,3,7]
输出: 49
示例2
输入: height = [1,1]
输出: 1

进阶:优化思路

在基本解法中,我们每次都会计算当前容器的面积并更新最大面积。如果数组中的垂线高度分布较为均匀,这种方法已经非常高效。但如果数组中有很多相同高度的垂线,可以进一步优化指针的移动策略,减少不必要的计算。


总结

通过使用双指针法,我们可以高效地找到能够容纳最多水的容器。这种方法不仅简洁,而且效率非常高,适合处理类似的问题。希望这篇题解对大家有所帮助,如果有任何问题,欢迎在评论区留言讨论!

关注我,获取更多算法题解和编程技巧!

相关文章:

LeetCode 热题 100 11. 盛最多水的容器

LeetCode 热题 100 | 11. 盛最多水的容器 大家好&#xff0c;今天我们来解决一道经典的算法题——盛最多水的容器。这道题在LeetCode上被标记为中等难度&#xff0c;要求我们找到两条垂线&#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的水。下面我将详细讲解解题思路…...

Web自动化之Selenium实战案例1:论文pdf自动下载

在上一篇文章中&#xff0c;我们介绍了Selenium的基础用法和一些常见技巧。今天&#xff0c;我们将通过中国科学&#xff1a;信息科学网站内当前目录论文下载这一实战案例来进一步展示Selenium的web自动化流程。 目录 中国科学&#xff1a;信息科学当期目录论文下载 1.网页内…...

在VSCode中接入deepseek

注册就送14元2000万tokens。 https://cloud.siliconflow.cn/i/rnbA6i6U各种大模型 下面介绍我是如如接入vscode的 左边生成一个key&#xff0c;呆会vscode要用&#xff0c;不然401. 打开vscod&#xff0c;电脑能上网。下插件。 下好要配置 点它一下。 要配置&#xff0c;全…...

CentOS停服后的替代选择:openEuler、Rocky Linux及其他系统的未来展望

CentOS停服后的替代选择&#xff1a;openEuler、Rocky Linux及其他系统的未来展望 引言CentOS停服的背景华为openEuler&#xff1a;面向未来的开源操作系统1. 简介2. 特点3. 发展趋势 Rocky Linux&#xff1a;CentOS的精神继承者1. 简介2. 特点3. 发展趋势 其他可选的替代系统1…...

vector的模拟实现

目录 一、构造和析构函数 二、插入删除访问迭代器 三、迭代器失效 四、拷贝构造和赋值 五、tip 一、构造和析构函数 namespace stn {template<class T>class vector{typedef T* iterator;public:vector():_start(nullptr);, _end(nullptr), _endofstorage(nullptr){…...

【高可用】keepalived的试用与学习笔记

版本日期修订人描述V1.02025/2/23nick huang创建文档 背景 最近&#xff0c;预研给现有的Nginx单点实例添加故障转移的功能&#xff0c;以备单实例故障时无法快速恢复。 本文记录Keepalived的学习笔记&#xff0c;供自己或同学日后参考。 Keepalived Keepalived是一个开源的…...

在Dify中实现联网检索功能(模拟DeepSeek)

跟着上一篇博客&#xff1a;Error response from daemon: Get “https://registry-1.docker.io/v2/“: request canceled while的解决办法-CSDN博客 DeepSeek发布之后&#xff0c;感觉联网检索功能变成标配了。这篇博客简单介绍一下怎么在Dify中配置初步的联网检索功能&#x…...

Deepseek-强化学习算法(通俗易懂版)

首先先贴一张Deepseek核心技术的梳理图&#xff1a; 上图详细了讲述了Deepseek主要在哪些阶段用了强化学习方法&#xff08;GRPO&#xff09; 1.GRPO算法 GRPO是一种用于提高语言模型推理能力的强化学习算法。它在DeepSeekMath论文中&#xff0c;在数学推理的背景下被提出。G…...

[展示]Webrtc NoiseSuppressor降噪模块嵌入式平台移植

最近在尝试把WebRtc的NoiseSuppressor模块移植到嵌入式平台&#xff0c;现在已经移植了&#xff0c;尝试了下效果&#xff0c;降噪效果很显著&#xff0c;噪声带被显著抑制了 降噪前&#xff1a; 降噪后&#xff1a;...

了解 RAG 第二部分:经典 RAG 的工作原理

在本系列的第一篇文章中&#xff0c;我们介绍了检索增强生成 (RAG) &#xff0c;解释了扩展传统大型语言模型 (LLM)功能的必要性。我们还简要概述了 RAG 的核心思想&#xff1a;从外部知识库检索上下文相关的信息&#xff0c;以确保 LLM 生成准确且最新的信息&#xff0c;而不会…...

剖析IO原理和零拷贝机制

目录 1 Linux的五种IO模型1.1 模型调用的函数1.1.1 recv函数1.1.2 select函数1.1.3 poll函数1.1.4 epoll函数1.1.5 sigaction函数 1.2 IO模型1.2.1 阻塞IO模型1.2.2 非阻塞IO模型1.2.3 IO复用模型1.2.4 信号驱动IO模型1.2.5 异步IO模型1.2.6 IO模型比较 2 Java的BIO、NIO、AIO2…...

【论文精读】MapTR:用于在线矢量化高精地图构建的结构化建模与学习

论文地址&#xff1a; MAPTR: STRUCTURED MODELING AND LEARNING FOR ONLINE VECTORIZED HD MAP CONSTRUCTION 源代码&#xff1a;MapTR 摘要 High-definition&#xff08;HD Map&#xff09;map为自动驾驶场景提供了丰富且精确的环境信息&#xff0c;是自动驾驶系统规划中不…...

云图库平台(五)——后端图片模块开发

目录 一、需求分析二、库表设计三、图片的处理如何实现图片的上传和下载创建图片的业务流程如何对图片进行解析 四、创建并使用对象存储五、后端操作对象存储初始化客户端通用能力类文档上传文件下载 一、需求分析 管理员功能&#xff1a; 图片的上传和创建&#xff1a;仅管理…...

Linux红帽:RHCSA认证知识讲解(一)RedHat背景与环境配置

Linux红帽&#xff1a;RHCSA认证知识讲解&#xff08;一&#xff09;RedHat背景与环境配置 前言一、RedHat公司背景二、RedHat环境安装步骤三、windows使用远程工具连接环境并上传文件到redhat方法&#xff1a; 前言 在接下来的博客中&#xff0c;我们从基础开始将介绍红帽Linu…...

【Linux】基于UDP/TCP套接字编程与守护进程

目录 一、网路套接字编程 &#xff08;一&#xff09;基础概念 1、源IP地址与目的IP地址 2、端口号 3、TCP与UDP 4、网络字节序 &#xff08;二&#xff09;套接字编程接口 1、socket 常见API 2、sockaddr结构 &#xff08;三&#xff09;UDP套接字 1、UDP服务器创建…...

Linux CentOS 上 Ollama 的安装与部署:从入门到实践

Linux CentOS 上 Ollama 的安装与部署:从入门到实践 随着人工智能技术的快速发展,大语言模型(LLMs)的应用场景越来越广泛。Ollama 作为一个轻量级的 AI 模型管理工具,为开发者提供了便捷的模型部署和管理解决方案。本文将详细介绍如何在 Linux CentOS 系统上安装和部署 O…...

大数据学习之任务流调度系统Azkaban、Superset可视化系统

一.任务流调度系统Azkaban 1.课程介绍 2.为什么需要工作流调度系统 3.AZKABAN是什么 4.AZKABAN下载 5.制作安装包 6.tar包准备 7.MYSQL配置AZKABAN 8.配置EXECUTOR SERVER 9.配置WEBSERVER 10.单作业实战_yaml语言(今天稍晚更新) 11.单作业实战 12.多作业依赖实战 13.失败自动重…...

网络空间安全(2)应用程序安全

前言 应用程序安全&#xff08;Application Security&#xff0c;简称AppSec&#xff09;是一个综合性的概念&#xff0c;它涵盖了应用程序从开发到部署&#xff0c;再到后续维护的整个过程中的安全措施。 一、定义与重要性 定义&#xff1a;应用程序安全是指识别和修复应用程序…...

UDP、TCP的区别

UDP&#xff08;用户数据报协议&#xff09;和TCP&#xff08;传输控制协议&#xff09;是两种常用的传输层协议&#xff0c;它们在数据传输方式、可靠性和应用场景等方面有显著区别。以下是它们的主要区别&#xff1a; ### 1. 连接方式 - **TCP**&#xff1a;面向连接。通信前…...

Linux 第二次脚本作业

1、需求&#xff1a;判断192.168.1.0/24网络中&#xff0c;当前在线的ip有哪些&#xff0c;并编写脚本打印出来。 2、设计一个 Shell 程序&#xff0c;在/userdata 目录下建立50个目录&#xff0c;即 user1~user50&#xff0c;并设置每个目录的权限&#xff0c;其中其他用户的权…...

高清下载油管视频到本地

下载工具并安装: yt-dlp官网地址&#xff1a; GitHub - yt-dlp/yt-dlp: A feature-rich command-line audio/video downloader ffmpeg官网地址&#xff1a; Download FFmpeg 注&#xff1a;记住为其添加环境变量 操作命令&#xff1a; 该指令表示以720p码率下载VIDEO_UR…...

Linux 命令大全完整版(07)

2. linux 系统设置命令 ulimit 功能说明&#xff1a;控制 shell 程序的资源。语法&#xff1a;ulimit [-aHS][-c <core 文件上限>][-d <数据节区大小>][-f <文件大小>][-m <内存大小>][-n <文件数目>][-p <缓冲区大小>][-s <堆叠大小…...

基于CentOS7安装kubesphere和Kubernetes并接入外部ES收集日志

一、修改所有节点主机名 主节点就修改成master hostnamectl set-hostname master 然后输入bash刷新当前主机名 工作节点1就修改成node1 hostnamectl set-hostname node1 然后输入bash刷新当前主机名 二、全部节点安装依赖并同步时间 yum -y install socat conntrack ebta…...

Javascript网页设计案例:通过PDFLib实现一款PDF分割工具,分割方式自定义-完整源代码,开箱即用

功能预览 一、工具简介 PDF 分割工具支持以下核心功能: 拖放或上传 PDF 文件:用户可以通过拖放或点击上传 PDF 文件。两种分割模式: 指定范围:用户可以指定起始页和结束页,提取特定范围的内容。固定间距:用户可以设置间隔页数(例如每 5 页分割一次),工具会自动完成分…...

高速差分信号的布线

差分信号如何在PCB上布线&#xff1f; 1.差分信号必须保证线间距相等&#xff0c;禁止打过孔或者放置元器件 2.差分信号必须打孔时&#xff0c;必须要保证伴随屏蔽地过孔&#xff08;缝合定位孔&#xff09;&#xff0c;减少信号干扰问题。 3.差分信号走线弯曲位置推荐&#…...

用openresty和lua实现壁纸投票功能

背景 之前做了一个随机壁纸接口&#xff0c;但是不知道大家喜欢对壁纸的喜好&#xff0c;所以干脆在实现一个投票功能&#xff0c;让用户给自己喜欢的壁纸进行投票。 原理说明 1.当访问http://demo.com/vote/时&#xff0c;会从/home/jobs/webs/imgs及子目录下获取图片列表&…...

智能测试执行 利用算法 利用图像识别、自然语言处理等技术实现自动化测试执行

以下将从Web应用和移动应用两个方面,给出利用图像识别、自然语言处理等技术实现自动化测试执行的实例,并附上部分代码示例。 Web应用自动化测试实例:模拟用户登录操作测试 需求理解 对于一个Web应用的登录功能进行自动化测试,我们可以结合自然语言处理理解测试用例描述,…...

AI学习之-阿里天池

阿里天池&#xff08;Tianchi&#xff09;是阿里巴巴集团旗下的一个数据科学与人工智能竞赛平台&#xff0c;致力于推动数据科学和人工智能的发展。在天池平台上&#xff0c;人们可以参与各种数据竞赛和挑战&#xff0c;解决实际问题&#xff0c;提升数据科学技能。天池平台提供…...

AGI觉醒假说的科学反驳:从数学根基到现实约束的深度解析

文章目录 引言:AGI觉醒论的核心迷思一、信息论视角:意识产生的熵约束1.1 香农熵的物理极限1.2 量子退相干的时间屏障二、数学根基:形式系统的自指困境2.1 哥德尔不完备定理的现代诠释三、概念解构:AGI觉醒假说的认知陷阱3.1 术语混淆的迷雾3.2 拟人化谬误的认知根源四、意识…...

SpringMVC的基本使用

controller标记一个类是控制器类 RequestMapping 进行路由映射可以是类也可以是方法&#xff0c;路由的/可以不加&#xff0c;但建议加上 1&#xff09;简单的映射返回一个hello RequestMapping("/m1")public String m1() { return "hello";} 2&#x…...

【漫话机器学习系列】103.学习曲线(Learning Curve)

学习曲线&#xff08;Learning Curve&#xff09;详解 1. 什么是学习曲线&#xff1f; 学习曲线&#xff08;Learning Curve&#xff09;是机器学习和深度学习领域中用于评估模型性能随训练过程变化的图示。它通常用于分析模型的学习能力、是否存在过拟合或欠拟合等问题。 从…...

ubuntu-24.04.1-desktop 中安装 QT6.7

ubuntu-24.04.1-desktop 中安装 QT6.7 1 环境准备1.1 安装 GCC 和必要的开发包:1.2 Xshell 连接 Ubuntu2 安装 Qt 和 Qt Creator:2.1 下载在线安装器2.2 在虚拟机中为文件添加可执行权限2.3 配置镜像地址运行安装器2.4 错误:libxcb-xinerama.so.0: cannot open shared objec…...

MQTT实现智能家居------2、写MQTT程序的思路

举个最简单的例子&#xff1a; 手机------服务器-------家具 我们这里只看手机和家具的客户端&#xff1a; 手机&#xff1a;1&#xff09;需要连接服务器 2&#xff09;需要发布指令给服务器到家里的家具 3&#xff09;接受来自于家里家具的异常状况 4&#xff09;保持心…...

【个人开发】deepspeed+Llama-factory 本地数据多卡Lora微调【完整教程】

文章目录 1.背景2.微调方式2.1 关键环境版本信息2.2 步骤2.2.1 下载llama-factory2.2.2 准备数据集2.2.3 微调模式2.2.3.1 zero-1微调2.2.3.2 zero-2微调2.2.3.3 zero-3微调2.2.3.4 单卡Lora微调 2.2.4 实验2.2.4.1 实验1&#xff1a;多GPU微调-zero12.2.4.2 实验2&#xff1a;…...

DeepSeek 从入门到精通:全面掌握 DeepSeek 的核心功能与应用

引言 DeepSeek 是一款功能强大的工具&#xff08;或平台/框架&#xff0c;具体根据实际定义&#xff09;&#xff0c;广泛应用于数据分析、人工智能、自动化任务等领域。无论你是初学者还是资深开发者&#xff0c;掌握 DeepSeek 的核心功能和应用场景都将为你的工作和学习带来…...

“国补”带火手机换新,出售旧手机应如何保护个人信息安全

在“国补”政策的推动下,手机换新热潮正席卷而来。“国补”以其诱人的补贴力度,成功激发了消费者更换手机的热情。无论是渴望体验最新技术的科技爱好者,还是对旧手机性能不满的普通用户,都纷纷投身到这场手机换新的浪潮之中。 随着大量消费者参与手机换新,二手手机市场迎来…...

驱动开发系列39 - Linux Graphics 3D 绘制流程(二)- 设置渲染管线

一:概述 Intel 的 Iris 驱动是 Mesa 中的 Gallium 驱动,主要用于 Intel Gen8+ GPU(Broadwell 及更新架构)。它负责与 i915 内核 DRM 驱动交互,并通过 Vulkan(ANV)、OpenGL(Iris Gallium)、或 OpenCL(Clover)来提供 3D 加速。在 Iris 驱动中,GPU Pipeline 设置 涉及…...

Windows使用docker部署fastgpt出现的一些问题

文章目录 Windows使用docker部署FastGPT出现的一些问题1.docker部署pg一直重启的问题2.重启MongoDB之后一直出现“Waiting for MongoDB to start...”3.oneapi启动不了failed to get gpt-3.5-turbo token encoder Windows使用docker部署FastGPT出现的一些问题 1.docker部署pg一…...

六十天前端强化训练之第一天HTML5语义化标签深度解析与博客搭建实战

欢迎来到编程星辰海的博客讲解 目录 一、语义化标签的核心价值 1.1 什么是语义化&#xff1f; 1.2 核心优势 二、语义标签详解与使用场景 2.1 布局容器标签 2.2 内容组织标签 三、博客结构搭建实战 3.1 完整HTML结构 3.2 核心结构解析 3.3 实现效果说明 四、学习要点…...

Oracle中补全时间的处理

在实际数据处理的过程中&#xff0c;存在日期不连续的问题&#xff0c;可能会导致数据传到前后端出现异常&#xff0c;为了避免这种问题&#xff0c;通常会从数据端进行日期不全的处理&#xff1a; 以下为补全年份的案例&#xff1a; with x as (select 开始年份 &#xff08;…...

PHP课程预约小程序源码

&#x1f4f1; 课程预约小程序&#xff1a;为您专属定制的便捷预约新体验 在这个快节奏的时代&#xff0c;我们深知每一位瑜伽爱好者、普拉提追随者以及培训机构管理者对高效、便捷服务的迫切需求。因此&#xff0c;我们匠心独运&#xff0c;推出了一款基于PHPUniApp框架开发的…...

(200): error: #29: expected an expression error: #40: expected an identifier

这是因为你乱加define导致你的define与变量名重复就会出现&#xff0c;他找不到错误只会抱着两个错...

一文讲解Redis中的常用命令

①、操作字符串的命令有&#xff1a; SET key value&#xff1a;设置键 key 的值为 value。GET key&#xff1a;获取键 key 的值。DEL key&#xff1a;删除键 key。INCR key&#xff1a;将键 key 存储的数值增一。DECR key&#xff1a;将键 key 存储的数值减一。 ②、操作列表…...

智能交通系统(Intelligent Transportation Systems):智慧城市中的交通革新

智能交通系统&#xff08;Intelligent Transportation Systems, ITS&#xff09;是利用先进的信息技术、通信技术、传感技术、计算机技术以及自动化技术等&#xff0c;来提升交通系统效率和安全性的一种交通管理方式。ITS通过收集和分析交通数据&#xff0c;智能化地调度、控制…...

Node.js 登录鉴权

目录 Session express-session 配置 express-session 函数 ts 要配置声明文件 express-session.d.ts express-session 使用 express-session 带角色 Token 什么是 JWT token jsonwebtoken 使用 jsonwebtoken 带角色 Session express 使用 express-session 管理会话&…...

EPSON L3118彩色喷墨打印机灯全闪故障维修一例

一台EPSON L3118彩色喷墨打印机&#xff0c;故障时开机灯全闪烁&#xff0c;一般来说这种故障问题都不太大&#xff0c;要么就是打印机内部卡纸了&#xff0c;要么就是传感器故障&#xff0c;一般情况下卡纸的问题比较多… …&#xff1b; 但是遇到一用户又菜又爱玩&#xff0c…...

在 Mac ARM 架构的 macOS 系统上启用 F1 键作为 Snipaste 的截屏快捷键

在 Mac ARM 架构的 macOS 系统上启用 F1 键作为 Snipaste 的截屏快捷键&#xff0c;主要涉及到两个方面&#xff1a;确保 F1 键作为标准功能键工作 和 在 Snipaste 中设置 F1 为快捷键。 因为 Mac 默认情况下&#xff0c;F1-F12 键通常用作控制屏幕亮度、音量等系统功能的快捷键…...

基于AT89C51单片机的教室智能照明控制系统

点击链接获取Keil源码与Project Backups仿真图&#xff1a; https://download.csdn.net/download/qq_64505944/90419908?spm1001.2014.3001.5501 C16 部分参考设计如下&#xff1a; 摘 要 本项目的智能教室灯光控制系统通过合理的软硬件设计&#xff0c;有效地提升了教室…...

JavaSE学习笔记25-反射(reflection)

反射 在Java中&#xff0c;反射&#xff08;Reflection&#xff09; 是一种强大的机制&#xff0c;允许程序在运行时检查和操作类、方法、字段等信息。通过反射&#xff0c;可以动态地创建对象、调用方法、访问字段&#xff0c;甚至修改私有成员。反射的核心类是 java.lang.re…...

ctf网络安全题库 ctf网络安全大赛答案

此题解仅为部分题解&#xff0c;包括&#xff1a; 【RE】&#xff1a;①Reverse_Checkin ②SimplePE ③EzGame 【Web】①f12 ②ezrunner 【Crypto】①MD5 ②password ③看我回旋踢 ④摩丝 【Misc】①爆爆爆爆 ②凯撒大帝的三个秘密 ③你才是职业选手 一、 Re ① Reverse Chec…...