LeetCode - 11.盛最多水的容器

一. 题目链接 

LeetCode - 11.盛最多水的容器

二. 思路解释

利用双指针的思想,定义一个left和reght,left指向首部,right指向尾部,计算当前两个指针所对应的高度构成容器的体积。根据当前双指针所指的高度的大小,然后让指针向内移动,直到left=right(一开始left指向首部,right指向尾部,此时容器的底是最大的,接下来随着指针向内移动,会造成容器的底变小,在这种情况下想要让容器盛水变多,就只有在容器的高上下功夫。 那我们该如何决策哪个指针移动呢?我们能够发现不管是左指针向右移动一位,还是右指针向左移动一位,容器的底都是一样的,都比原来减少了 1。这种情况下我们想要让指针移动后的容器面积增大,就要使移动后的容器的高尽量大,所以我们选择指针所指的高较小的那个指针进行移动,这样做可以保留较高柱子的边界,同时增加找到更高柱子并提升容器高度的可能性

  1. 初始化指针: 设置两个指针,一个在数组的开始位置(称为left),另一个在数组的结束位置(称为right)。

  2. 计算容积: 容器的容积由两个指针指向的柱子中较短的那一个决定(因为水的高度由较短的柱子决定),以及两个柱子之间的距离。容积的计算公式为:(right - left) * min(height[left], height[right])

  3. 移动指针: 比较两个指针指向的柱子的高度:

    • 如果height[left] < height[right],则移动left指针向右移动(即left++),因为在这种情况下,可能存在一个更高的柱子在左指针的右边,能与右指针形成更大容积的容器。
    • 反之,如果height[right] <= height[left],则移动right指针向左移动(即right--),出于同样的逻辑,可能存在一个更高的柱子在右指针的左边。
  4. 重复计算与移动: 持续进行容积的计算,并根据上述逻辑移动指针,直到leftright相遇。

  5. 输出最大容积: 在整个过程中,保持一个变量来记录遇到的最大容积,最后输出这个最大值。

使用双指针方法的优点是时间复杂度为O(n),比暴力解法的O(n^2)要高效得多。这种方法之所以有效,是因为它利用了柱子之间距离的递减和可能遇到更高柱子的机会来逐步缩小搜索范围,同时保证没有错过可能的最大容积配置。

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

三. 动画解释

四. 代码解释

class Solution {
public:int maxArea(vector<int>& height) {int left = 0;//初始化左指针int right = height.size() - 1;//初始化右指针int res = 0;  // 初始化结果变量while (left < right) {int currentArea = (right - left) * min(height[left], height[right]);//计算当前的面积res = max(res, currentArea);  // 更新最大面积if (height[left] > height[right]) {right--;  // 移动较短的一边} else {left++;  // 移动较短的一边}}return res;}
};

注意:每次进行完计算res体积之后,要和之前的res进行对比,如果比它大就替换,比它小就不替换 

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

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

相关文章

linux服务器和RAID磁盘阵列

1、服务器 &#xff08;1&#xff09;服务器分类 机架式居多 塔式 刀片式 机柜式 机架式 机架式服务器是一种服务器的机箱形式&#xff0c;它被设计为在服务器机架或机柜中安装。机架式服务器通常具有标准的19英寸宽度&#xff0c;并且可以根据服务器的高度进行划分&#xff0…

富唯智能:打造未来机器人教育新标杆

随着科技的飞速发展&#xff0c;机器人教育正逐渐成为培养未来人才的重要领域。富唯智能&#xff0c;作为业内领先的机器人技术提供商&#xff0c;近日推出了一款全新的机器人教育实践平台系统&#xff0c;旨在为学生提供更加丰富、更具挑战性的学习体验。 该平台系统以AUBO-i5…

电力监控系统是什么,有哪些功能

电力监控系统是什么,有哪些功能 电力是国家重要的基础设施&#xff0c;电力监控系统用于监视和控制电力生产和供应过程&#xff0c;是电力安全稳定运行的支撑系统。 什么是电力监控系统&#xff1f; 电力监控系统是指用于监视和控制电力生产及供应过程的、基于计算机及网…

上网行为管理软件有哪些?三款常用上网行为管理软件评测

互联网的普及&#xff0c;企业和个人对于网络安全和信息保护的需求越来越高。为了确保网络环境的安全和稳定&#xff0c;上网行为管理软件应运而生。本文将对三款常用的上网行为管理软件进行评测&#xff0c;分别是域智盾、Splunk Enterprise Security和安企神。 1、域智盾 域…

Linux查看僵尸进程

1、查看系统是否有僵尸进程 使用Top命令查找&#xff0c;当zombie前的数量不为0时&#xff0c;即系统内存在相应数量的僵尸进程。 2、定位僵尸进程 使用命令ps -A -ostat,ppid,pid,cmd |grep -e ‘^[Zz]’定位僵尸进程以及该僵尸进程的父进程。 3、杀死僵尸进程 使用Kill -…

二叉树中的最长交错路径

题目链接 二叉树中的最长交错路径 题目描述 注意点 每个节点的值在 [1, 100] 之间 解答思路 深度优先遍历整棵树&#xff0c;遍历的同时需要将到达根节点是向左交叉还是向右交叉以及路径长度传递到子树。当根节点是向左交叉遍历而来&#xff0c;子树想和根节点组成路径就只…

<计算机网络自顶向下> 面向连接的传输:TCP

目录 TCP: 概述 TCP报文段结构 TCP往返延时&#xff08;RTT&#xff09;和超时 可靠数据传输 快速重传 流量控制 连接管理 TCP: 概述 点对点 一个发送方&#xff0c;一个接收方可靠的、按顺序的字节流 不出错&#xff0c;不重复&#xff0c;不丢失&#xff0c;不失序没有报…

面试算法准备:动态规划

这里写自定义目录标题 1 理论2 例题2.1 斐波那契数列&#xff08;什么是重叠子问题&#xff09;2.1.1 带备忘录的递归解法 2.2 零钱兑换&#xff08;讲解最优子结构&#xff09;2.3 最长递增子序列&#xff08;讲解如何求解状态转移方程&#xff09;2.4 俄罗斯套娃信封问题&…

3月养颜抗氧化市场发展趋势洞察:抗糖亮肤功能性产品成为行业大势

随着我国人口老龄化程度的加深和人们对健康和美丽的追求日益增强&#xff0c;具备养颜抗氧化、抗衰老功能的产品逐渐成为市场热门&#xff0c;备受人们关注。 根据鲸参谋数据显示&#xff0c;今年3月份&#xff0c;在线上电商平台&#xff08;京东天猫淘宝&#xff09;养颜抗氧…

[Windows] Bypass分流抢票 v1.16.25 五一黄金周自动抢票软件(2024.02.08更新)

五一黄金周要来了&#xff0c;火车票难买到&#xff0c;即便官网候选订票也要看运气&#xff0c;推荐使用这个靠谱的自动抢票软件&#xff0c; 该工具是目前市面上最好用口碑最好的电脑抢票软件&#xff0c;从13年到现在&#xff0c;作者依旧在更新&#xff0c;可以自动识别123…

什么是最优物理隔离文件导出导入解决方案,来看看吧

企业进行物理隔离的主要原因是为了提高安全性&#xff0c;减少安全风险。物理隔离通常指的是将网络或系统中的关键部分与外界断开直接连接&#xff0c;以增强安全性。在企业环境中&#xff0c;这通常意味着将内部网络&#xff08;内网&#xff09;与外部网络&#xff08;如互联…

关于MCU核心板的一些常见问题

BGA植球与焊接&#xff08;多涂焊油&#xff09;&#xff1a; 【BGA芯片是真麻烦&#xff0c;主要是植锡珠太麻烦了&#xff0c;拆一次就得重新植】https://www.bilibili.com/video/BV1vW4y1w7oNvd_source3cc3c07b09206097d0d8b0aefdf07958 / NC电容一般有两种含义&#xff1…

控制台居然可以这么玩?五分钟带你上手ANSI指令,实现一个log工具包

目录 前言 基础知识 进阶实践 ANSI参数 ANSI类 JSLog类 工具的使用说明 配置相关 全局配置项 默认配置 基本用法 打印字符 添加全局配置项 清空所有样式及操作行为 校验传入的参数是否正确 样式控制 Node环境 浏览器中 光标控制指令 光标位置偏移 滚动条控…

消费增值:革新你的消费体验,让每一分钱都更有价值

亲爱的顾客们&#xff0c;你们好&#xff01;今天&#xff0c;我想为大家介绍一种革新性的消费模式——消费增值&#xff0c;它赋予每一次购物以额外的价值&#xff0c;让消费过程变得更加丰富多彩。 过去&#xff0c;我们的消费观念往往是“一手交钱&#xff0c;一手交货”&am…

LCD彩屏显示方案选型攻略:从接口到GUI开发工具的全面评估

在现代人类社会&#xff0c;彩色显示技术是科技王国里最为绚丽夺目的技术奇葩&#xff0c;LCD彩屏通过显示实时信息并提供交互式的体验&#xff0c;将信息时代打扮得多姿多彩。无论是智能家电还是医疗健康设备领域&#xff0c;精美直观的LCD彩屏显示&#xff0c;往往能够为用户…

【Linux学习】初始冯诺漫体系结构

文章目录 认识冯诺依曼系统 认识冯诺依曼系统 什么是冯诺依曼体系结构&#xff1f; 冯诺依曼体系结构是一种将程序指令和数据以二进制形式存放在主存储器中&#xff0c;由中央处理器统一控制和执行的计算机系统结构。冯诺依曼体系结构实现了程序的可编程性和硬件与软件的分离&…

wordpress建网站主题案例推荐

wordpress企业网站主题案例 https://www.mymoban.com/wordpress/ wordpress公司官网主题案例 https://www.wowsoho.com/jianzhan wordpress外贸主题案例 https://www.wpniu.com/moban

用户中心 -- 插件使用 插件使用思路

易错注意点 1 5.1启动类 & 入口类 需保持一致 网址&#xff1a; 第一节课&#xff0c;用户管理--后端初始化&#xff0c;项目调通。二次翻工2-CSDN博客 一、 用户管理 框架 网址&#xff1a; 用户管理 --汇总 -- 明细-CSDN博客 1.2 更改路径&#xff0c;并生效 网址…

基于SpringBoot的“家具销售电商平台”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“家具销售电商平台”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 管理员登录界面 管理员功能界面 家具分类管理…

戴尔g15删掉的数据怎么恢复?介绍几种常用方法

随着科技的发展&#xff0c;电脑已成为我们日常生活和工作中不可或缺的一部分。其中&#xff0c;戴尔G15作为一款高性能的笔记本电脑&#xff0c;受到了许多用户的青睐。然而&#xff0c;就像任何电子设备一样&#xff0c;戴尔G15也难免会遇到数据丢失的问题。因此&#xff0c;…