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

news2024/11/23 20:10:35

1 问题

给定一个长度为 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

2 答案

自己写的,逻辑上没问题,但是太慢,超出时间限制

class Solution:
    def maxArea(self, height: List[int]) -> int:
        maxA = 0
        for i in range(len(height)):
            for j in range(i+1, len(height)):
                maxA = max(maxA, (j-i)*min(height[i], height[j]))
        
        return maxA

在这里插入图片描述
官方解

class Solution:
    def maxArea(self, height: List[int]) -> int:
        i, j, res = 0, len(height) - 1, 0  # i j 双指针
        while i < j:  # 相遇则弹出
            if height[i] < height[j]:  # 当i是短板
                res = max(res, height[i] * (j - i))
                i += 1 # 向内移动i
            else:  
                res = max(res, height[j] * (j - i))
                j -= 1
        return res

3 原理

利用双指针

在每个状态下,无论长板或短板向中间收窄一格,都会导致水槽 底边宽度 −1-1−1​ 变短:

  • 若向内 移动短板 ,水槽的短板 min ⁡ ( h [ i ] , h [ j ] ) \min (h[i], h[j]) min(h[i],h[j]) 可能变大,因此下个水槽的面积 可能增大 。

  • 若向内 移动长板 ,水槽的短板 min ⁡ ( h [ i ] , h [ j ] ) \min (h[i], h[j]) min(h[i],h[j]) 不变或变小,因此下个水槽的面积 一定变小 。

因此,初始化双指针分列水槽左右两端,循环每轮将短板向内移动一格,并更新面积最大值,直到两指针相遇时跳出;即可获得最大面积。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1091278.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[自用] win 10安装cuda 10.2和cuDNN 10.2

之前已经安装cuda 10.0和cuDNN 10.0 参考博文&#xff1a; https://blog.csdn.net/qq_50677040/article/details/132131346 https://blog.csdn.net/weixin_67615387/article/details/128807503 安装目录&#xff1a; cmd验证

Android百度地图sdk设置Marker不同颜色

使用百度地图sdk&#xff0c;在地图上画一个marker图标很简单&#xff0c;如下 private fun drawMark(point: LatLng){var resId R.mipmap.icon_device//这个资源是一张图片//构建Marker图标val bitmap BitmapDescriptorFactory.fromResource(resId)//构建MarkerOption&#…

计算机视觉:池化层的作用是什么?

本文重点 在深度学习中,卷积神经网络(CNN)是一种非常强大的模型,广泛应用于图像识别、目标检测、自然语言处理等领域。而池化层作为CNN中的一个关键步骤,扮演着优化神经网络、提升深度学习性能的重要角色。本文将深入探讨池化层的作用及其重要性,帮助读者更好地理解和应…

计算机网络 实验四 子网划分(网络层)

实验目的&#xff1a; 通过实验掌握下列知识&#xff1a; ① 熟悉子网掩码算法和网关&#xff0c;掌握子网划分方法。 ② 了解路由器的作用&#xff0c;掌握静态路由的基本配置。 实验过程分析&#xff1a; 静态路由基本配置 按照拓扑图接线【截图】。PC_1和PC_2设置IP地址…

实时美颜技术的崭新时代:美颜SDK开发与应用

美颜技术的崭新时代已经来临&#xff0c;实时美颜SDK的开发和应用成为数字世界中不可或缺的一部分。从社交媒体到视频直播&#xff0c;实时美颜技术已经在各种应用中取得了广泛成功&#xff0c;吸引了数百万用户。本文将深入探讨实时美颜技术的发展、SDK的开发&#xff0c;以及…

计算机网络 实验五 RIP与OSPF实验(网络层算法)

实验目的&#xff1a; 通过实验掌握下列知识&#xff1a; 1. 掌握RIP路由协议基本原理&#xff0c;熟悉RIP协议基本配置。 2. 掌握OSPF路由协议基本原理&#xff0c;熟悉配置单区域OSPF。 实验过程分析&#xff1a; RIP协议基本配置 按照拓扑图接线【截图】。对RTA进行RI…

java智慧停车系统源码

java智慧停车系统源码 技术架构&#xff1a; 后端开发语言java&#xff0c;采用最新springcloudalibaba版本开发&#xff0c;框架oauth2springboot2.6(可升级到3.0)doubble3.2&#xff0c;使用nacos, seata&#xff0c;sentinel&#xff0c;&#xff0c;数据库mysql/mongodb/…

【经验】解决重置 Windows 10 时报错:“无法找到介质” 的错误

按以下流程走&#xff1a; 管理员方式打开cmd输入命令: reagentc /info如果Enabled为空&#xff0c;则说明没有设置正确找到以下三个文件&#xff1a; WinRE.wimboot.sdiReAgent.XML 下载地址&#xff1a;http://www.winwin7.com/Soft/XTBD-555.html?_t1577956053 将这3个文…

Windows 10 用 Hyper-V 安装 Ubuntu

0、快速创建&#xff08;已启用Hyper-V&#xff09; &#xff08;默认安装路径&#xff1a;C:\Users\Public\Documents\Hyper-V\Virtual hard disks&#xff09; 可通过设置更改&#xff1a; 安装操作系统 1、启用 Windows 功能&#xff1a;Hyper-V 然后重启电脑 2、搜索 …

微信小程序开发者账号注册

✨博文作者&#xff1a;烟雨孤舟 &#x1f496; 喜欢的可以 点赞 收藏 关注哦~~ ✍️ 作者简介: 一个热爱大数据的学习者 ✍️ 笔记简介&#xff1a;作为微信小程序云开发爱好者&#xff0c;以下是个人总结的学习笔记&#xff0c;如有错误&#xff0c;请多多指教&#xff01;…

DDoS防护技术解析:深入了解当前的DDoS防护技术和方法

前言 网络安全已经成为每个企业和个人都不能忽视的问题。DDoS&#xff08;分布式拒绝服务&#xff09;攻击&#xff0c;作为一种常见的网络攻击方式&#xff0c;已经成为许多组织和个人的头痛之源。为了有效地应对这种攻击&#xff0c;各种DDoS防护技术和方法应运而生。 如果…

实验室超声波清洗机如何清洗PH电极?

PH电极是一个非常精确的检测元件&#xff0c;电极主要是玻璃电极作为测量电极&#xff0c;甘汞电极作为参考电极&#xff0c;如果PH电极被污染后&#xff0c;其敏感性会降低&#xff0c;稳定性会变差。所以对于PH清洁电极尤为重要。PH计电极的清洗方法有很多。最原始的清洗方法…

Android项目在 app 中通过 WebView 访问 url显示空白,使用浏览器可以打开,Android WebView加载出现空白页面问题解决

这是服务器证书校验WebView的安全问题 服务器证书校验主要针对 WebView 的安全问题。在 app 中需要通过 WebView 访问 url&#xff0c;因为服务器采用的自签名证书&#xff0c;而不是 ca 认证&#xff0c;使用 WebView 加载 url 的时候会显示为空白&#xff0c;出现无法加载网…

公众号留言功能怎么恢复?评论功能如何开启?

为什么公众号没有留言功能&#xff1f;2018年2月12日&#xff0c;TX新规出台&#xff1a;根据相关规定和平台规则要求&#xff0c;我们暂时调整留言功能开放规则&#xff0c;后续新注册帐号无留言功能。这就意味着2018年2月12日号之后注册的公众号不论个人主体还是组织主体&…

时间复杂度O(40n*n)的C++算法:修改图中的边权

本篇源码下载 点击下载 1.12.1. 题目 给你一个 n 个节点的 无向带权连通 图&#xff0c;节点编号为 0 到 n - 1 &#xff0c;再给你一个整数数组 edges &#xff0c;其中 edges[i] [ai, bi, wi] 表示节点 ai 和 bi 之间有一条边权为 wi 的边。 部分边的边权为 -1&#xff08…

CANoe创建仿真工程

CANoe创建仿真工程 写在前面仿真工程的创建创建工程添加CAN数据库添加系统变量创建面板创建网络节点为节点添加代码工程运行测试总结 写在前面 Canoe的安装不是特别方便&#xff0c;我是参加了松勤的培训课程&#xff0c;不仅需要安装软件还需要安装驱动&#xff0c;刚刚学习的…

YOLOv5算法改进(12)— 主干网络介绍(EfficientNetv2、Swin Transformer和PP-LCNet)

前言:Hello大家好,我是小哥谈。主干网络通常指的是深度学习中的主干模型,通常由多个卷积层和池化层组成,用于提取输入数据的特征。在训练过程中,主干网络的参数会被不断优化以提高模型的准确性。YOLOv5算法中的主干网络可以有多种替换方案,为了后面讲解的方便,本篇文章就…

Neural Improvement Heuristics for Graph Combinatorial Optimization Problems

Neural Improvement Heuristics for Graph Combinatorial Optimization Problems IEEE TRANSACTIONS ON NEURAL NETWORKS AND LEARNING SYSTEMS 2023 摘要 图神经网络&#xff08;GNN&#xff09;架构的最新进展和增加的计算能力已经彻底改变了组合优化&#xff08;CO&#…

Postgresql关于EOH的使用注意

注意通常拿到的指针不是EOH头 EOH是一种扩展数据结构&#xff0c;之前有几篇博客讨论过了&#xff0c;最近在改相关代码加深了一些理解。 EOH目前支持ER_methods、EA_methods两套实现&#xff0c;分别是record类型展开和数组类型展开。 在内存中的样子大概是&#xff08;EA为…

环境下载地址

1. DOTNET环境下载 适用于 Visual Studio 的 .NET SDK 下载 (microsoft.com)https://dotnet.microsoft.com/zh-cn/download/visual-studio-sdks