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

embedded/2025/2/23 5:01:47/

一、题目描述

给定一个长度为 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 = [1,1]
输出:1

提示:

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

二、解题过程

1、第一次尝试

1.1 代码如下

python">class Solution(object):def maxArea(self, height):""":type height: List[int]:rtype: int"""max_area = 0    # 初始化最大面积为0left, right = 0, len(height) - 1    # 左、右指针# 当左指针小于右指针时,继续循环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 += 1  # 左指针右移else:right -= 1  # 右指针左移return max_area

1.2 运行情况

在这里插入图片描述

2、优化

2.1 代码如下
增加了一个提前终止条件判断:

python">if max_area >= max_heigh * (right - left):break

完整代码如下:

python">class Solution(object):def maxArea(self, height):""":type height: List[int]:rtype: int"""max_area = 0    # 初始化最大面积为0left, right = 0, len(height) - 1    # 左、右指针max_heigh = max(height)# 当左指针小于右指针时,继续循环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 += 1  # 左指针右移else:right -= 1  # 右指针左移# 增加提前终止条件if max_area >= max_heigh * (right - left):breakreturn max_area

2.2 运行情况
在这里插入图片描述


http://www.ppmy.cn/embedded/164532.html

相关文章

RNN中远距离时间步梯度消失问题及解决办法

RNN中远距离时间步梯度消失问题及解决办法 RNN 远距离时间步梯度消失问题LSTM如何解决远距离时间步梯度消失问题 RNN 远距离时间步梯度消失问题 经典的RNN结构如下图所示&#xff1a; 假设我们的时间序列只有三段&#xff0c; S 0 S_{0} S0​ 为给定值&#xff0c;神经元没有…

DeepSeek-R1使用生存指南

文章目录 1.为什么普通人一定要使用DeepSeek2.DeepSeek的几种使用方式2.1网页端直接使用2.2手机端app使用2.3其他第三方平台 3.网页端按钮的说明4.正确的提问技巧4.1不要定义过程4.2明确受众4.3记忆时间有限4.4输出长度限制4.5如何清除上下文的记忆 5.几个避坑点5.1冗长提示词污…

啥是CTF?新手如何入门CTF?网络安全零基础入门到精通实战教程!

CTF是啥 CTF 是 Capture The Flag 的简称&#xff0c;中文咱们叫夺旗赛&#xff0c;其本意是西方的一种传统运动。在比赛上两军会互相争夺旗帜&#xff0c;当有一方的旗帜已被敌军夺取&#xff0c;就代表了那一方的战败。在信息安全领域的 CTF 是说&#xff0c;通过各种攻击手…

蓝桥杯备赛-基础训练(二)链表 day13

1、移除链表元素 题意&#xff1a;删除链表中等于给定值 val 的所有节点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,6,3,4,5,6], val 6 输出&#xff1a;[1,2,3,4,5] 示例 2&#xff1a; 输入&#xff1a;head [], val 1 输出&#xff1a;[] 示例 3&#xff1a;…

大模型产品Deepseek(八)、数据嵌入+知识库管理+联网搜索,实现精准的知识查询

如何将数据嵌入到DeepSeek中以实现精准的知识查询 1. 目标 DeepSeek是一个强大的基于大模型的知识查询工具,能够通过数据嵌入和智能查询功能提供精确的答案。本文将详细介绍如何在DeepSeek中进行数据嵌入,以便最大化其在实际应用中的价值。 2. 推荐使用的Page Assist插件 …

Quasar:轻量级、高效的.NET远程管理工具

推荐一个Windows的免费开源远程管理工具。 01 项目简介 这是一个基于 C#开发的、开源的快速、轻量级远程管理工具&#xff0c;可用于服务器管理工作以及员工监控&#xff0c;是一个高稳定性和易于使用的的远程管理工具。 02 项目核心功能 1、支持 TCP 协议&#xff0c;适用…

【Python爬虫(35)】解锁Python多进程爬虫:高效数据抓取秘籍

【Python爬虫】专栏简介&#xff1a;本专栏是 Python 爬虫领域的集大成之作&#xff0c;共 100 章节。从 Python 基础语法、爬虫入门知识讲起&#xff0c;深入探讨反爬虫、多线程、分布式等进阶技术。以大量实例为支撑&#xff0c;覆盖网页、图片、音频等各类数据爬取&#xff…

Linux之kernel(1)系统基础理论(4)

Linux之Kernel(1)系统基础理论(4) Author: Once Day Date: 2025年2月16日 一位热衷于Linux学习和开发的菜鸟&#xff0c;试图谱写一场冒险之旅&#xff0c;也许终点只是一场白日梦… 漫漫长路&#xff0c;有人对你微笑过嘛… 全系列文章可参考专栏: Linux内核知识_Once-Day的…