LeetCode 42. 接雨水 - PHP

给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。

 左右两边是漏的,就是第一个柱子和最后一个柱子不接雨水。

暴力递归

class Solution {/*** @param Integer[] $height* @return Integer*/function trap($height) {$n = count($height);$ans = 0;for ($i = 1; $i < $n - 1; $i++) {$l_max = 0;$r_max = 0;// 找右边最高的柱子for ($j = $i; $j < $n; $j++)$r_max = max($r_max, $height[$j]);// 找左边最高的柱子for ($j = $i; $j >= 0; $j--)$l_max = max($l_max, $height[$j]);// 如果自己就是最高的话,// l_max == r_max == height[i]$ans += min($l_max, $r_max) - $height[$i];}return $ans;}
}

直接爆内存。

双指针

class Solution {/*** @param Integer[] $height* @return Integer*/function trap($height){$n = count($height);if (!$n) return 0;$l = 0;$l_max = $height[$l];$r = $n - 1;$r_max = $height[$r];$ans = 0;while ($l < $r) {if ($height[$l] < $height[$r]) {if ($height[$l] < $l_max) $ans += $l_max - $height[$l];else $l_max = $height[$l];$l++;} else {if ($height[$r] < $r_max) $ans += $r_max-$height[$r];else $r_max = $height[$r];$r--;}}return $ans;}
}

拿left指针做实例

如果大于if ($height[$l] < $l_max)

最终数量会加上当前最大的减掉$l指针指着的,$ans += $l_max - $height[$l];

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

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

相关文章

office的文件(word、excel、ppt)图标变白

之前用过WPS&#xff0c;后来卸载了&#xff0c;之后图标就变成白的了&#xff0c;但是word、Excel、PPT等都可以正常使用&#xff0c;说明不是打开方式的问题&#xff0c;然后就找问题所在。 看b站视频得知有可能是卸载wps之后&#xff0c;注册表里的图标路径仍然是之前的WPS…

[python3] 读取一个正在更新的日志文件

要读取一个正在更新的日志文件&#xff08;即实时写入的日志文件&#xff09;&#xff0c;你可以使用 Python 的 open() 函数打开文件&#xff0c;并使用 tail -F 或 f.seek(0, os.SEEK_END) 的技巧来实现实时读取。下面是两种方法的示例&#xff1a; 使用 tail -F 的方法&…

webpack的简单使用

webpack的简单使用 项目初始化 npm init npm install --save-dev webpack npm install --save-dev webpack-cli –save表示非全局下载&#xff1b;–global表示全局下载 &#xff08;不同项目可能需要不同的依赖版本&#xff0c;故用–save更好&#xff09; -dev表示开发环境…

推荐收藏的五款上网行为管理软件

在选择上网行为监控软件的时候需要考虑这几个因素&#xff1a;市场占有率、价格、是否试用、服务商实力等&#xff0c;以下介绍的这几个软件就是从这几个方面出发&#xff0c;为大家总结的优秀软件。 安企神&#xff1a; 国内企业级信息安全解决方案提供商&#xff0c;其上网行…

MAC用户福利:一站式电商客服工具下载地址大全揭秘!

列举和比较拼多多商家版,阿里卖家MAC版本&#xff0c;京麦工作台&#xff0c;聊天宝MAC版&#xff0c;千牛MAC版&#xff0c;抖店MAC版各种适用于MAC系统的电商客服工具&#xff0c;提供平台MAC版本的下载地址&#xff0c;帮助用户提高客服效率、改善客户体验&#xff0c;从而提…

大数据第六天

这里写目录标题 问题解决问题查询插入(时间慢)练习sql数据清理 问题 FAILED: ParseException line 1:16 mismatched input ‘input’ expecting INPATH near ‘local’ in load statement MismatchedTokenException(24!155) 加载数据的时候出现了这个错误&#xff0c;我们解释…

【spring】springProperty 使用

springProperty 是一个在 Spring 框架中使用的SpEL&#xff08;Spring Expression Language&#xff09;表达式&#xff0c;它允许你在应用程序的配置中引用 Spring 应用程序上下文中的属性值。这个表达式通常用于从 Spring 的 Environment 对象中获取配置属性的值&#xff0c;…

(36)4.20 数据结构(线性表)初始化,输入,删除,查找

#include<stdio.h> #include<stdlib.h> #include<errno.h> #define InitSize 10 #define Max_Size 10 //1.顺序表上基本操作的实现//顺序表的初始化 typedef struct { int* data; //指示动态分配数组指针 int MaxSize;//顺序表的最大容量 int …

Linux基础 - libc.so调试版本编译

技术文档记录 问题&#xff1a;使用自编译的libc.so库进行动态链接报错 步骤&#xff1a; 获取源码&#xff1a;下载libc源码 https://ftp.gnu.org/gnu/glibc/glibc-2.29.tar.gz调试模式&#xff1a;使用 export CFLAGS" -g3 -Og" 来编译 libc.so测试编译&#xf…

STM32 HAL库 利用CH376进行USB文件读写

STM32 其实可以进行读取USB文件,但仅限于F4以上芯片才可以进行SUB文件读写,但在项目开发中,往往用不到此芯片,那么只能通过外挂的USB芯片进行USB文件读写,本文则是采用STM32F103的SPI与CH376进行通信,通过CH376操作指令进行操作。 1、CH376介绍 CH376芯片 是沁恒的一款文…

Web前端-前端工程化

黑马程序员JavaWeb开发教程 文章目录 一、前后端分离开发1、介绍&#xff08;1&#xff09;前后端混合开发&#xff08;2&#xff09;、前后端分离开发 2、YAPI&#xff08;1&#xff09;介绍 二、前端工程化-环境准备1、Vue-cli&#xff08;1&#xff09;NodeJS安装教程 三、前…

【软件工程中的增量模型】

文章目录 前言什么是增量模型&#xff1f;增量模型的优点1. 风险控制2. 增量交付3. 可变性4. 提高可维护性 增量模型的缺点1. 需求变更的管理2. 集成测试的复杂性3. 可能的性能问题 前言 增量模型是一种迭代式的软件开发模型&#xff0c;注重将系统划分为多个子系统或模块&…

客服话术分享:客服如何挖掘需求?

电商客服主动挖掘询问顾客需求是非常重要的&#xff0c;这就需要我们具备一定的沟通技巧。今天这篇客服话术分享&#xff0c;很适合想提升业绩的你们哦&#xff01; 一、打招呼式询问需求&#xff1a; 1.欢迎光临&#xff0c;本店竭诚为您服务~请问您有什么具体想了解的问题吗&…

【PHP】PHP7中的引用计数

目录 一、环境二、前言三、字符串类型四、数组类型问题1:不变数组的作用是什么?问题2:为什么非空的不变数组的refcount初始值是2?五、引用类型六、参阅一、环境 PHP 7.4 二、前言 PHP的变量在底层有一个引用计数(refcount)属性,这个引用计数是为垃圾回收(GC)服务的…

力扣数据库题库学习(4.24日)

1068. 产品销售分析 I 问题链接 思路分析 编写解决方案&#xff0c;以获取 Sales 表中所有 sale_id 对应的 product_name 以及该产品的所有 year 和 price 。返回结果表 无顺序要求 。 这个问题很简单&#xff0c;查询两张表内的指定字段。这个考的其实就是数据库的连接&am…

半字节16进制转asci

void uartTxHexByte(uint8_t Data) {uartTxByte(nibbleToHex(Data >> 4));uartTxByte(nibbleToHex(Data & 0x0F)); }uint8_t nibbleToHex(uint8_t nibble) {uint8_t ret nibble;if(nibble < 10){ret 0;}else{ret A - 10;}return(ret); }

架构师系列-MYSQL调优(六)- 排序优化

MySQL中的两种排序方式 索引排序: 通过有序索引顺序扫描直接返回有序数据额外排序: 对返回的数据进行文件排序ORDER BY优化的核心原则: 尽量减少额外的排序&#xff0c;通过索引直接返回有序数据。 索引排序 因为索引的结构是B树&#xff0c;索引中的数据是按照一定顺序进行…

janus架构学习

基础介绍 Janus 是由Meetecho设计和开发的开源、通用的基于SFU架构的WebRTC流媒体服务器&#xff0c;它支持在Linux的服务器或MacOS上的机器进行编译和安装。Janus 是使用C语言进行编写的&#xff0c;它的性能十分优秀。 架构 janus为sfu架构 模块结构图 模块说明 core模…

VR全景创业项目应该如何开展?未来有市场吗?

伴随着5G网络的发展&#xff0c;VR全景得到了众多的关注和提升。与此同时&#xff0c;各行各业都开始关注自身产业在互联网的展示效果&#xff0c;因为年轻一代的生活已经离不开互联网&#xff0c;而VR全景在互联网上的3D展示效果能给商家带来流量&#xff0c;提升营业额。 随着…

【Qt】.ui文件转.h文件

1、打开qt命令行 2、转换 uic -o ui.h mainwindow.ui