盛水最多的容器
hello 大家好!今天开写一个新章节,每一天一道算法题。让我们一起来学习算法思维吧!
function maxArea(height) {// 初始化最大水量为 0let maxWater = 0;// 初始化左指针,指向数组的第一个元素let left = 0;// 初始化右指针,指向数组的最后一个元素let right = height.length - 1;// 只要左指针小于右指针,就继续循环while (left < right) {// 计算当前左右指针所指垂线构成的容器的宽度const width = right - left;// 计算当前左右指针所指垂线构成的容器的高度,取两者中的较小值const currentHeight = Math.min(height[left], height[right]);// 计算当前容器能容纳的水量const currentWater = width * currentHeight;// 更新最大水量maxWater = Math.max(maxWater, currentWater);// 如果左指针所指垂线的高度小于右指针所指垂线的高度if (height[left] < height[right]) {// 左指针右移一位left++;} else {// 否则,右指针左移一位right--;}}// 返回最大水量return maxWater;
}// 测试示例
const height = [1, 8, 6, 2, 5, 4, 8, 3, 7];
console.log(maxArea(height));
代码解释
整体思路
本题使用双指针法来解决。我们使用两个指针分别指向数组的开头和结尾,通过计算这两个指针所指垂线与 x 轴构成的容器的水量,并不断移动指针来寻找最大水量。由于容器的水量由宽度(两个指针的距离)和高度(两个指针所指垂线高度的较小值)决定,每次移动较短的垂线对应的指针,这样有可能找到更大的水量。
代码步骤分析
初始化变量:
- maxWater:用于记录最大水量,初始化为 0。
- left:左指针,初始指向数组的第一个元素,索引为 0。
- right:右指针,初始指向数组的最后一个元素,索引为 height.length - 1。
双指针遍历:
- 使用 while 循环,只要 left 小于 right 就继续循环。
- 在每次循环中,计算当前容器的宽度 width 为 right - left。
- 计算当前容器的高度 currentHeight 为 height[left] 和 height[right] 中的较小值。
- 计算当前容器能容纳的水量 currentWater 为 width * currentHeight。
- 更新 maxWater 为 maxWater 和 currentWater 中的较大值。 根据 height[left] 和
height[right] 的大小关系移动指针:如果 height[left] 小于 height[right],将 left
指针右移一位;否则,将 right 指针左移一位。
返回结果:
- 当 left 不再小于 right 时,循环结束,返回 maxWater,即最大水量。
相关文章:
盛水最多的容器
hello 大家好!今天开写一个新章节,每一天一道算法题。让我们一起来学习算法思维吧! function maxArea(height) {// 初始化最大水量为 0let maxWater 0;// 初始化左指针,指向数组的第一个元素let left 0;// 初始化右指针…...
数据分析系列--①RapidMiner软件安装
目录 一、软件下载及账号注册 1.软件下载 1.1 CSDN下载国内下载,国内镜像相对快,点击下载 1.2 官网软件下载地址:AI Studio 2025.0 ,服务器在国外相对较慢. 2.软件注册 2.1 点击 注册界面 开始注册,如图: 3.邮箱验证 二、软件安装 1. 新年文件夹,名字最好为英文名 2. 双…...
DeepSeek-R1:开源Top推理模型的实现细节、使用与复现
核心观点 ● 直接用强化学习就可以让模型获得显著的推理能力,说明并不一定需要SFT才行。 ● 强化学习并不一定需要复杂的奖励模型,使用简单的规则反而取得意想不到的效果。 ● 通过知识蒸馏让小模型一定程度上也有推理能力,甚至在某些场景下…...
Linux(19)——使用正则表达式匹配文本
新年快乐! 目录 一、正则表达式: 二、通过 grep 匹配正则表达式: 三、查找匹配项: 一、正则表达式: 正则表达式使用模式匹配机制查找特定内容,vim、grep 和 less 命令都可以使用正则表达式,P…...
STM32 对射式红外传感器配置
这次用的是STM32F103的开发板(这里面的exti.c文件没有how to use this driver 配置说明) 对射式红外传感器 由一个红外发光二极管和NPN光电三极管组成,M3固定安装孔,有输出状态指示灯,输出高电平灯灭,输出…...
2025年1月25日(赋值前引用)
pycharm 提示: 局部变量 ‘start_time’ 可能在赋值前引用 局部变量 ‘stop_time’ 可能在赋值前引用 Traceback (most recent call last):File "/home/raspberry/Desktop/python/01_其他/04_超声波/ml_01_超声波测距.py", line 63, in <module>mai…...
C++基础(1)
目录 1. C发展历史 2. C第一个程序 3. 命名空间 3.1 namespace的价值 3.2 命名空间的定义 3.3 命名空间的使用 4. C输入和输出 5. 缺省参数 6. 函数重载 6.1 实现函数重载的条件 6.2 函数重载的应用 1. C发展历史 C的起源可以追溯到1979年,当时Bjarne…...
【第十天】零基础入门刷题Python-算法篇-数据结构与算法的介绍-两种常见的字符串算法(持续更新)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、Python数据结构与算法的详细介绍1.Python中的常用的字符串算法2.字符串算法3.详细的字符串算法1)KMP算法2)Rabin-Karp算法 总结 前言…...
开发者交流平台项目部署到阿里云服务器教程
本文使用PuTTY软件在本地Windows系统远程控制Linux服务器;其中,Windows系统为Windows 10专业版,Linux系统为CentOS 7.6 64位。 1.工具软件的准备 maven:https://archive.apache.org/dist/maven/maven-3/3.6.1/binaries/apache-m…...
一次端口监听正常,tcpdump无法监听到指定端口报文问题分析
tcpdump命令: sudo tcpdump -i ens2f0 port 6471 -XXnnvvv 下面是各个部分的详细解释: 1.tcpdump: 这是用于捕获和分析网络数据包的命令行工具。 2.-i ens2f0: 指定监听的网络接口。ens2f0 表示本地网卡),即计算机该指定网络接口捕…...
【C++题解】1393. 与7无关的数?
欢迎关注本专栏《C从零基础到信奥赛入门级(CSP-J)》 问题:1393. 与7无关的数? 类型:简单循环 题目描述: 一个整数,如果这个数能够被 7 整除,或者其中有一位是7,我们称…...
【自学嵌入式(6)天气时钟:软硬件准备、串口模块开发】
天气时钟:软硬件准备、串口模块开发 软硬件准备接线及模块划分ESP8266开发板引脚图软件准备 串口模块编写串口介绍Serial库介绍 近期跟着网上一些教学视频,编写了一个天气时钟,本篇及往后数篇都将围绕天气时钟的制作过程展开。本文先解决硬件…...
高低频混合组网系统中基于地理位置信息的信道测量算法matlab仿真
目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 2.算法运行软件版本 matlab2022a 3.部分核心程序 (完整版代码包含详细中文注释和操作步骤视频)…...
Kotlin函数式API
Kotlin函数式API 1.maxBy val list listOf("Apple","Banana", "Orange","pear","Grape","Watermelon") val maxLengthFruit list.maxBy {it.length} println(maxLengthFruit) 2.map 集合中zhi的map函数是最…...
我的2024年终总结和2025年展望
我的2024年终总结和2025年展望 一、前言 目前已经回到家两天了,我相信大部分人已经到家了。明天就是过年了。 没想到匆匆又是一年,这一年怎么说? 似乎并不好说,没有想象中的意气风发,有时候还想摆烂! 但…...
【Unity3D】实现2D角色/怪物死亡消散粒子效果
核心:这是一个Unity粒子系统自带的一种功能,可将粒子生成控制在一个Texture图片网格范围内,并且粒子颜色会自动采样图片的像素点颜色,之后则是粒子编辑出消散效果。 Particle System1物体(爆发式随机速度扩散10000个粒…...
【Docker】Docker入门了解
文章目录 Docker 的核心概念Docker 常用命令示例:构建一个简单的 C 应用容器1. 创建 C 应用2. 创建 Dockerfile3. 构建镜像4. 运行容器 Docker 优势学习 Docker 的下一步 **一、Docker 是什么?****为什么 C 开发者需要 Docker?** **二、核心概…...
threejs实现烟花效果
大家好!我是 [数擎 AI],一位热爱探索新技术的前端开发者,在这里分享前端和 Web3D、AI 技术的干货与实战经验。如果你对技术有热情,欢迎关注我的文章,我们一起成长、进步! 开发领域:前端开发 | A…...
23【进制的理解】
很多人可能听过计算机的最底层是2进制执行,但是原理并不知道,我们今天先不讨论那么复杂的问题,先讨论什么是进制 1910,10并不是1个字符,而是2个字符,也就是说在10进制里面没有“10”这个字符,1…...
VMware 和本机(Win10)安装共享文件
1. 安装VM-tools, sudo apt-get install open-vm-tools-desktop -y 2. VMware->设置-> 选项中启动共享文件夹. 3. 本机设置共享文件夹(文件目录为data),右键属性设置: VMware, Other Locations->Computer->mnt->data 即可。 ps: 还有个…...
整数转罗马数字
hello 大家好!今天开写一个新章节,每一天一道算法题。让我们一起来学习算法思维吧! function intToRoman(num) {// 定义罗马数字符号和对应的整数值,按照从大到小的顺序排列const values [1000, 900, 500, 400, 100, 90, 50, 40,…...
数据结构--树
树的基本概念 树:一个或多个节点的有限集合。 存在一个称为根的特定节点,其余的节点被分为n个互不相交的集合T1,T2,…,Tn,其中的每一个集合都是一棵树。T1,T2,…,Tn称为根…...
Next.js 14 TS 中使用jwt 和 App Router 进行管理
jwt是一个很基础的工作。但是因为架构不一样,就算是相同的架构,版本不一样,加jwt都会有一定的差别。现在我们的项目是Next.js 14 TS 的 App Router项目(就是没有pages那种),添加jwt的步骤: 1、…...
oracle 分区表介绍
oracle 分区表介绍 Oracle 分区表是一个非常强大的数据库功能,可以将一个大的表分割成多个更小、更易管理的块(分区)。这种分区结构在处理大规模数据时非常有用,因为它能改善性能、简化维护和管理,并支持高效的数据存取…...
TypeScript 学习 -类型 - 9
声明合并 成员变量合并:成员变量会合并,但类型必须一致。成员函数合并:如果函数签名不同,合并后的函数会是签名的联合类型。接口声明顺序:在同一个接口内按顺序合并;不同接口时,后声明的会覆盖…...
996引擎 - 前期准备-配置开发环境
996引擎 - 前期准备 官网搭建服务端、客户端单机搭建开发环境配置后端开发环境配置环境前端开发环境配置环境后端简介前端简介GUILayoutGUIExport官网 996传奇引擎官网 所有资料从官网首页开始,多探索。 文档: 996M2-服务端Lua 996M2-客户端Lua 搭建服务端、客户端 这个教…...
python-decouple和 django-environ管理 Python/Django 项目中的环境变量
在现代软件开发中,环境变量的管理是一个至关重要的任务。环境变量通常用于存储敏感信息(如 API 密钥、数据库凭据)或配置信息(如调试模式、日志级别)。为了更安全、更方便地管理环境变量,Python 社区提供了许多工具,其中最流行的两个是 python-decouple 和 django-envir…...
FileReader使用
FileReader : 读取文件内容的api,,,在前端处理上传的文件,,比如预览图片 readAsDataURL(file) : 读取为base64编码的 data urlreadAsText() : 读取为文本readAsArrayBuffer() : 读取为二进制 …...
npm cnpm pnpm npx yarn的区别
npm、cnpm、pnpm、npx、yarn 这几个工具都与 Node.js 项目的包管理和命令执行相关,它们的区别具体如下: 本质与功能定位 npm:是 Node.js 官方的包管理工具,提供了安装、卸载、更新、发布等全方位的包管理功能,还能通…...
knots = unique(knots, ‘stable‘);区别引用
【问题】knots unique(knots, stable); 和unique_knots unique(knots(2:end-1)); knots(2:end-1) unique_knots; 的区别 【解释】knots unique(knots, stable); 和 unique_knots unique(knots(2:end-1)); knots(2:end-1) unique_knots; 两段代码的主要区别在于它们处理重…...
c++ 定点 new
(1) 代码距离: #include <new> // 需要包含这个头文件 #include <iostream>int main() {char buffer[sizeof(int)]; // 分配一个足够大的字符数组作为内存池int* p new(&buffer) int(42); // 使用 placement new…...
无人机如何自主侦察?UEAVAD:基于视觉的无人机主动目标探测与导航数据集
作者:Xinhua Jiang, Tianpeng Liu, Li Liu, Zhen Liu, and Yongxiang Liu 单位:国防科技大学电子科学学院 论文标题:UEVAVD: A Dataset for Developing UAV’s Eye View Active Object Detection 论文链接:https://arxiv.org/p…...
怎样在PPT中启用演讲者视图功能?
怎样在PPT中启用演讲者视图功能? 如果你曾经参加过重要的会议或者演讲,你就会知道,演讲者视图(Presenter View)对PPT展示至关重要。它不仅能帮助演讲者更好地掌控演讲节奏,还能提供额外的提示和支持&#…...
大语言模型LLM在地理信息GIS中应用场景
AI&地理 AI大语言模型在地理中的应用主要体现在以下几个方面: 一、地理信息检索与查询 AI大语言模型能够理解复杂的自然语言查询,包括地名、地理位置、地理特征等,从而提供更加精准的地理信息检索服务。例如,用户可以通过自…...
AI常见的算法
人工智能(AI)中常见的算法分为多个领域,如机器学习、深度学习、强化学习、自然语言处理和计算机视觉等。以下是一些常见的算法及其用途: 1. 机器学习 (Machine Learning) 监督学习 (Supervised Learning) 线性回归 (Linear Regr…...
借DeepSeek-R1东风,开启创业新机遇
DeepSeek-R1的崛起 DeepSeek-R1的推出引发了广泛关注,在AI领域引起了一阵旋风。作为新一代的智能模型,它在多项任务中表现出了卓越的能力。普通人可以借助这个强大的工具,开启属于自己的创业之路,抓住时代带来的机遇。 内容创作…...
知识库建设对提升团队协作与创新能力的影响分析
内容概要 在当今快速变革的商业环境中,知识库建设的重要性愈发凸显。它不仅是信息存储的载体,更是推动组织内部沟通与协作的基石。通过系统整理与管理企业知识,团队成员能够便捷地访问相关信息,使得协作过程更为流畅,…...
Mongodb 慢查询日志分析 - 1
Mongodb 慢查询日志分析 使用 mloginfo 处理过的日志会在控制台输出, 显示还是比较友好的. 但是如果内容较大, 就不方便查看了, 如果可以导入到 excel 就比较方便筛选/排序. 但是 mloginfo 并没有提供生成到 excel 的功能. 可以通过一个 python 脚本辅助生成: import pandas…...
fps一些内容添加
1 增强输入要点记录 输入 :输入值的类型 布尔 1d,2d,3d 映射:就是确定按键输入键位,输入类型,和一些触发器(按键方式)修改器(对输出值进行修改) 基本的&am…...
从单体应用到微服务的迁移过程
目录 1. 理解单体应用与微服务架构2. 微服务架构的优势3. 迁移的步骤步骤 1:评估当前单体应用步骤 2:确定服务边界步骤 3:逐步拆分单体应用步骤 4:微服务的基础设施和工具步骤 5:管理和优化微服务步骤 6:逐…...
计算机视觉-卷积
卷积-图像去噪 一、图像 二进制 灰度 彩色 1.1二进制图像 0 1 一个点可以用一个bit(0/1)来表示 1.2灰度图像 0-255 一个点可以用一个byte来表示 1.3彩色图像 RGB 表达一个彩色图像先说它的分辨率p/w(宽)和q/h(高…...
Sprintboot原理
配置优先级 Springboot中支持的三种配置文件: application.propertiesapplication.ymlapplication.yaml java系统属性:-Dxxxxxx 命令行参数:-xxxxxx 优先级:命令行参数>java系统属性>application.properties>applicat…...
2007-2020年各省国内专利申请授权量数据
2007-2020年各省国内专利申请授权量数据 1、时间:2007-2020年 2、来源:国家统计局、统计年鉴 3、指标:行政区划代码、地区名称、年份、国内专利申请授权量(项) 4、范围:31省 5、指标解释:专利是专利权的简称&…...
SpringBoot或SpringAI对接DeekSeek大模型
今日除夕夜,deepseek可是出尽了风头,但是我看网上还没有这方面的内容对接,官网也并没有,故而本次对接是为了完成这个空缺 我看很多的博客内容是流式请求虽然返回时正常的,但是他并不是实时返回,而是全部响应…...
MV结构下设置Qt表格的代理
目录 预备知识 模型 关联 刷新 示例 代理 模型 界面 结果 完整资料见: 所谓MV结构,是“model-view”(模型-视图)的简称。也就是说,表格的数据保存在model中,而视图由view实现。在我前面的很多博客…...
C++:多继承习题2
题目内容: 分别声明Teacher类和Cadre类,采用多重继承派生出新类Teacher_Dadre。要求: (1)在两个基类中都包含姓名、年龄、性别、地址和电话。 (2)在Teacher类中包含title数据成员,Ca…...
DeepSeek--通向通用人工智能的深度探索者
一、词源与全称 “DeepSeek"由"Deep”(深度)与"Seek"(探索)组合而成,中文译名为"深度求索"。其全称为"深度求索人工智能基础技术研究有限公司",英文对应"De…...
Spring MVC中HandlerInterceptor和Filter的区别
目录 一、处理阶段 二、功能范围 三、参数访问 四、配置方式 五、使用场景说明 在Spring MVC中,HandlerInterceptor和Filter都是用于拦截请求的重要组件,但它们在多个方面存在显著的差异。本文将详细解析这两种拦截机制的区别,并结合使用…...
Linux 部署 Java 项目:Tomcat、Redis、MySQL 教程
在 Linux 服务器上部署 Java 项目通常需要配置应用服务器(如 Tomcat)、数据库(如 MySQL)和缓存服务器(如 Redis)。本文将详细介绍如何在 Linux 环境中部署一个 Java 项目,涵盖 Tomcat、Redis 和…...
C语言------数组从入门到精通
1.一维数组 目标:通过思维导图了解学习一维数组的核心知识点: 1.1定义 使用 类型名 数组名[数组长度]; 定义数组。 // 示例: int arr[5]; 1.2一维数组初始化 数组的初始化可以分为静态初始化和动态初始化两种方式。 它们的主要区别在于初始化的时机和内存分配的方…...