盛水最多的容器

2023-05-16

题目描述:

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

说明:你不能倾斜容器,且 n 的值至少为 2。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/container-with-most-water

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

示例:


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

解题思路:

  一开始最容易想到的方法就是暴力枚举法,用俩for循环求出所有面积,然后比较找出最大值,但这种方法的时间复杂度为O(n^2),因此在提交的时候会出现超时。

另外一种方法就是动态规划,利用双指针左右逼中去做,左右指针分别指向数组0下标与max下标,每次进行比较以小的指针对应的高度作为高,index之差作为宽,求得与x轴围成的面积,并与上一次的面积比较,保留最大值,之后小的一个指针向中间靠拢,与最终直至两指针相撞,循环结束输出最大面积。整个过程只用了一层循环,时间复杂度为O(n),比暴力枚举的方法好多了。

python:

class Solution:
    def maxArea(self, height: List[int]) -> int:
        left, right = 0, len(height) - 1
        Area = 0
        while left < right:
            NewArea = min(height[left], height[right]) * (right - left)
            Area= max(Area, NewArea )
            if (height[left] <= height[right]):
                left += 1
            else:
                right -= 1
        return Area

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

盛水最多的容器 的相关文章

  • 2021年Linux技术总结(四):Linux 驱动

    一 裸机驱动开发流程 所谓裸机在这里主要是指系统软件平台没有用到操作系统 在基于ARM处理器平台的软件设计中 xff0c 如果整个系统只需要完成一个相对简单而且独立的任务 xff0c 那么可以不使用操作系统 xff0c 只需要考虑在平台上如
  • C++ 编译错误 error: ‘cout‘ was not declared in this scope (摄氏度与华氏度的转换)

    练习c 43 43 的输入输出时 xff0c 编译遇到错误 xff1a error 39 cout 39 was not declared in this scope error 39 cin 39 was not declared in
  • rplidar的安装与使用

    rplidar的安装与使用 1 rplidar的安装2 RPLIDAR驱动下载3 将RPLIDAR连接好后 xff0c 检测串口是否连接成功4 编译工作空间并设置环境变量5 检查RPLIDAR A2的串行端口的权限并添加写权限 xff08
  • ros知识点1-1:节点发布话题,并设置发布频率

    1 创建节点发布话题 include ros ros h 针对ros中文本内容需要添加的头文件 include std msgs String h 发布方实现 int main int argc char argv ros init arg
  • CmakeLists.txt编写流程梳理

    目录 背景 xff1a 1 设置最低版本 xff1a 2 设置名称 版本号 xff1a 3 设置c c 43 43 支持版本4 设置编译器参数5 目标文件输出目录6 判断平台 xff0c 定义平台宏7 设置第三方头文件和设置链接库寻找路径8
  • Spring consider using ‘getBeanNamesOfType‘ with the ‘allowEagerInit‘ flag turned off, for example.

    看下spring说的类 xff0c 两个类之间发生循环引用了 xff0c 请在一方的注入属性上添加 64 Lazy注解 避免循环引用
  • 本地访问阿里云上部署的项目

    本地访问阿里云上部署的项目 1 确保本地能用ping命令连接阿里云服务器 命令 win 43 r 输入cmd ping 43 阿里云共网 ip 2 在阿里云官网上的安全组里进行相关配置 3 选择配置规则 xff0c 进行配置 4 重新在Xs
  • 在jeston nano开发板之中安装ros系统

    这段时间由于工作的需要 xff0c 要在jeston nano之中安装ros系统 jeston nano之中对应的系统是ubuntu18 04所对应的ros系统版本为ROS Melodic 在安装的过程之中遇见了很多的坑 xff0c 特此记
  • make的相关命令详解和区别

    makefile定义了一系列的规则来指定 xff0c 哪些文件需要先编译 xff0c 哪些文件需要后编译 xff0c 哪些文件需要重新编译 xff0c 甚至于进行更复杂的功能操作 xff0c 因为 makefile就像一个Shell脚本一样
  • TX2板 (ubuntu18.04系统)使用记录

    TX2板 ubuntu18 04系统 xff09 使用记录 一 TX2板 ubuntu18 04系统 xff09 更换国内软件源1 备份原软件源2 修改sources list文件3 更新 二 TX2板 ubuntu18 04系统 xff0
  • 海康威视相机标定、畸变矫正及AprilTag获取视觉标签三维信息

    海康威视相机标定 畸变矫正及AprilTag获取视觉标签三维信息 一 海康威视相机标定二 相机去畸变三 Apritag ros获得视觉标签的三维位置 一 海康威视相机标定 相机标定经调研共发现三种常用方式 xff1a 利用Matlab的ca
  • 如何切换Echarts主题

    一 打开Echarts官方文档 点击资源 gt 主题构建工具 进入到主题选择页面 二 选择默认主题 点击默认方案选择合适的主题 例如选择macarons xff0c 点击后右侧展示对应主题效果 三 应用主题 1 下载主题 点击下载主题 xf
  • C中strchr()函数用法

    strchr 函数包含于头文件 xff1a include lt stdio h gt 中 xff1b 函数原型为 xff1a char strchr char str char int c 函数功能为 xff1a 在字符串str中寻找字符
  • 切身经历,经理都慌了!云服务器连接成功蓝屏,桌面没有任何图标显示

    恢复了服务器数据 xff0c 结果服务器桌面任何东西都看不到了 xff0c 只有一个蓝色背景 xff0c 那一刻 xff0c 我心里是慌的 解决方案 xff1a 1 使用远程桌面 xff0c 输入您服务器IP地址登陆服务器 2 一个用户黑屏
  • KMP算法的理解

    串的模式匹配算法主要有两种 xff0c 一是简单模式匹配 xff0c 而是KMP算法 简单模式匹配算法很容易理解 xff0c 每一次从主串的第一个位置起和模式串的第一个字符开始比较 xff0c 如果相等就按照顺序一直比下去 xff0c 如果
  • 普利姆算法和克鲁斯卡尔算法求解最小生成树

    Q xff1a 最小生成树有什么用 xff1f A xff1a 譬如我要去五个城市旅游 xff0c 每两个城市之间可能有路也可能没有 xff0c 路的距离可能一样也可能不一样 xff0c 随机从一个城市出发 xff0c 我想要把每个城市走一
  • ES多个字段group by操作

    以下操作基于es6 8 第一种方式 这种方式查询出来的数据不是扁平化的 xff0c 而是一层套一层的 xff0c 比如字段一套字段二 GET 索引name 索引type search 34 size 34 0 34 aggregations
  • 整数反转

    给出一个 32 位的有符号整数 xff0c 你需要将这个整数中每位上的数字进行反转 示例 1 输入 123 输出 321 示例 2 输入 123 输出 321 示例 3 输入 120 输出 21 注意 假设我们的环境只能存储得下 32 位的
  • python批量爬取图片

    import requests import time import re 请求网页 header防止被禁止访问403 xff0c 伪装成浏览器 xff0c 不会被认为是python headers 61 39 User Agent 39
  • LeetCode罗马数字转整数

    罗马数字包含以下七种字符 I xff0c V xff0c X xff0c L xff0c C xff0c D 和 M 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如 xff0c 罗马数字 2 写做

随机推荐

  • STM32F407-跑马灯

    硬件准备 xff08 STM32F407ZGT6 xff09 1 初始准备 1 1打开Template模板 xff0c 在工程目录下新建HARDWARE文件夹 1 2 新建在HARDWARE路径中新建led c led h两个文件 xff0
  • LeetCode-括号匹配

    给定一个只包括 39 39 xff0c 39 39 xff0c 39 39 xff0c 39 39 xff0c 39 39 xff0c 39 39 的字符串 xff0c 判断字符串是否有效 有效字符串需满足 xff1a 左括号必须用相同类型
  • STM32F407-串口通信基本原理

    1 处理器与外部设备通信的两种方式 xff1a 并行通信 传输原理 xff1a 数据各个位同时传输 优点 xff1a 速度快 缺点 xff1a 占用引脚资源多 串行通信 传输原理 xff1a 数据按位顺序传输 优点 xff1a 占用引脚资源
  • STM32F407-串口数据传送

    一 串口基础 1 常用的串口相关寄存器 USART SR状态寄存器USART DR数据寄存器USART BRR波特率寄存器 2 串口操作相关库函数 xff08 省略入口参数 xff09 void USART Init 串口初始化 xff1a
  • 外观数组

    外观数列 是一个整数序列 xff0c 从数字 1 开始 xff0c 序列中的每一项都是对前一项的描述 前五项如下 xff1a 1 1 2 11 3 21 4 1211 5 111221 1 被读作 34 one 1 34 34 一个一 34
  • STM32F407-外部中断

    一 基本概念 STM32F4的每个IO都可以作为外部中断输入 STM32F4的中断控制器支持22个外部中断 事件请求 xff1a EXTI线0 15 xff1a 对应外部IO口的输入中断 EXTI线16 xff1a 连接到PVD输出 EXT
  • 杨辉三角①与②

    给定一个非负整数 numRows xff0c 生成杨辉三角的前 numRows 行 在杨辉三角中 xff0c 每个数是它左上方和右上方的数的和 示例 输入 5 输出 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 思路 xff1
  • wireshark 清空列表

    windows ctrl 43 shift 43 D mac ctrl 43 shift 43 D 操作后 xff1a
  • 二叉树最大深度与最小深度

    给定一个二叉树 xff0c 找出其最大深度 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数 说明 叶子节点是指没有子节点的节点 示例 xff1a 给定二叉树 3 9 20 null null 15 7 xff0c 3 9 20 15
  • 买卖股票的最佳时机①

    给定一个数组 xff0c 它的第 i 个元素是一支给定股票第 i 天的价格 如果你最多只允许完成一笔交易 xff08 即买入和卖出一支股票 xff09 xff0c 设计一个算法来计算你所能获取的最大利润 注意你不能在买入股票前卖出股票 示例
  • 图像语义分割原理及常用方法

    1图像语义分割的概念 1 1图像语义分割的概念与原理 图像语义分割可以说是图像理解的基石性技术 xff0c 在自动驾驶系统 xff08 具体为街景识别与理解 xff09 无人机应用 xff08 着陆点判断 xff09 以及穿戴式设备应用中举
  • TensorFlow基础篇

    1 TensorFlow 是什么 是一个深度学习库 xff0c 由 Google 开源 xff0c 可以对定义在 Tensor 张量 上的函数自动求导 Tensor 张量 意味着 N 维数组 xff0c Flow 流 意味着基于数据流图的计
  • 从国外官网github下载各种软件安装包项目太慢怎么办

    1 网速太慢 xff0c 被限速经常失败 xff0c 复制下面网址到迅雷下载 2 更改下载源 pip install selenium i http pypi douban com simple 还有多个其他下载源清华的下载源好像不能用了
  • 深度学习-神经网络编程使用过程中的问题汇总。

    1 pip安装下载速度慢 xff0c 不稳定容易失败等问题 第一个方法是改变下载源 pip install selenium i http pypi douban com simple 还有多个其他下载源清华的下载源好像不能用了 xff0c
  • Tensorflow问题之赋值失败为空值

    import tensorflow as tf a 61 tf zeros 2 3 b 61 tf ones 4 c 61 tf fill 2 2 9 print 34 a 34 a print 34 b 34 b print 34 c 3
  • 神经网络----TF1与TF2代码实现鸢尾花分类

    运行环境 xff1a python3 6 5 43 tensorflow1 13 2 python3 7 43 tensorflow2 0 Tensorflow1 xff1a 1 首先加载鸢尾花数据集 xff0c 读入输入特征以及标签 直接
  • 语义分割权重h5文件下载失败问题

    这个问题困扰我很久 xff0c 所以单拿出来记录以泄我心头之恨 xff0c 从github上下载预训练权重太慢 xff0c 经常发生timeout错误导致下载失败 xff0c 查了好多网站都没办法解决我的问题 xff0c 于是乎自己研究了一
  • LeetCode-整数转罗马数字

    罗马数字包含以下七种字符 xff1a I xff0c V xff0c X xff0c L xff0c C xff0c D 和 M 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如 xff0c 罗马数
  • could not find compatible versions for pod boost-for-react-native

    具体错误如下图 xff1a 这是因为在 jsi 中标记的boost for react native版本是1 63 0 xff0c 而在 gitee 中的 boost for react native 版本是 1 63 0 1 xff0c
  • 盛水最多的容器

    题目描述 xff1a 给你 n 个非负整数 a1 xff0c a2 xff0c xff0c an xff0c 每个数代表坐标中的一个点 i ai 在坐标内画 n 条垂直线 xff0c 垂直线 i 的两个端点分别为 i ai 和 i 0 找出