7.接雨水

news/2025/3/14 19:56:31/文章来源:https://www.cnblogs.com/hxss/p/18772770

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

示例1:
image

输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]
输出:6
解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。

示例2:

输入:height = [4,2,0,3,2,5]
输出:9

提示:

  • n == height.length
  • 1 <= n <= 2 * 104
  • 0 <= height[i] <= 105

代码:

class Solution {public int trap(int[] height) {//left数组表示每个柱子左侧最高柱子的高度(包括自己在内)int[] left = new int[100005];//right数组表示每个柱子右侧最高柱子的高度(包括自己在内)int[] right = new int[100005];//n表示height数组的长度int n = height.length;//如果是第一根柱子,则其左侧最高柱子只能是自己left[0] = height[0];for(int i = 1;i<n;i++){//否则,第i根柱子左侧(包括自己)最高柱子的高度 = max(第i-1根柱子左侧最高柱子的长度,第i根柱子的高度)left[i] = Math.max(left[i-1],height[i]);}//如果是最后一根柱子,则其右侧最高柱子只能是自己right[n-1] = height[n-1];for(int i = n-2;i>=0;i--){////否则,第i根柱子右侧(包括自己)最高柱子的高度 = max(第i+1根柱子右侧最高柱子的长度,第i根柱子的高度)right[i] = Math.max(right[i+1],height[i]);}//res用于记录总接水量int res = 0;//循环遍历n根柱子,第i根柱子所能接水的量即为min(第i根柱子左侧(包括自己)最高柱子的长度,第i根柱子右侧(包括自己)最高柱子的长度)-第i根柱子的高度//累加结果for(int i=0;i<n;i++)res += Math.min(left[i],right[i])-height[i];//返回总接水量return res;}
}

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

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

相关文章

K近邻算法等

1. KNN算法和KD - tree总结 1.1 KNN算法 模型 K近邻(K - Nearest Neighbors,KNN)算法是一种基本的分类与回归方法。它的模型实际上是对特征空间的划分,给定一个训练数据集,对于新的输入实例,在训练数据集中找到与该实例最邻近的 \(K\) 个实例,然后根据这 \(K\) 个实例的…

正则表达式--java进阶day06

1.正则表达式2.正则表达式的规则、使用3.字符类讲解如图,单独一个a满足正则表达式的规则,所以返回true当删去[]后,正则表达式中的规则就会变为必须是abc,否则不满足条件,即使有一个a该规则是指a-d或者m-p,可以写成[a-dm-p]4.预定义字符类注意事项 正则表达式中存在数量问…

探秘Transformer系列之(13)--- FFN

从零开始解析Transformer,目标是:(1) 解析Transformer如何运作,以及为何如此运作,让新同学可以入门;(2) 力争融入一些比较新的或者有特色的论文或者理念,让老鸟也可以有所收获。探秘Transformer系列之(13)--- FFN 目录探秘Transformer系列之(13)--- FFN0x00 概述0x01…

EXCEL-时间函数

💖简介 在Excel中,时间函数用于处理和操作日期和时间数据; 以下是Excel中常用的时间函数及其常见应用场景的总结.📖函数 ⭐时间函数基础 🌟TIME语法:TIME(hour, minute, second) 功能:将小时、分钟、秒转换为时间序列号(0到0.99999999之间的数值)。 示例:TIME(9,30…

day29linux三剑客----sed

day29linux三剑客----sed单个正则字符还认识组合到一起就晕了,怎么办?本质还是对单个字符没理解.认识*认识.*组合到就一起就蒙了,为什么?还是没想明白.的意义,*的意义正则表达式,从左向右,逐步理解单个字符的意义怎么做? 1.思维脑图写没写? 2.每一个正则表达式的符号,…

3.14 学习记录

基于Android Studio 完成了简单的石家庄地铁购票APP

Android配置

将grade-wrapper.properties中地址改为 https://mirrors.cloud.tencent.com/gradle/gradle-8.11.1-bin.zip 等待下载。一般要几个小时。

sqlserver 的视图创建

首先,什么是视图?视图是一种数据库对象,是从一个或者多个数据表或视图中导出的虚表,视图的结构和数据是对数据表进行查询的结果,只存放视图的定义,不存放视图对应的数据; 其结构和和数据是建立在对表的查询基础上,故表中的数据发生变化,从视图中查询出的数据也随之改变…

day:21 python——判断语句

一.if语句 (1)单分支: 格式: if 判断条件: 执行语句块 else: 执行语句块2 备注:判断条件 if中可以使用比较运算符,<,!=,==,>=,<=在学习自动化中也可以用if语句断言, 案例1: a=10 if a != 10: print("你中奖了") else: print("谢谢惠顾"…

clickhouse 开启认证

配置文件说明 默认路径:/etc/clickhouse-server/users.xml 密码存储类型 明文密码(不推荐) <password>qwerty</password> <!-- 直接明文存储 --> SHA256 哈希 <password_sha256_hex>5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d15…

二分查找--java进阶day06

1.二分查找 https://kdocs.cn/l/ciMkwngvaWfz?linkname=150996908 二分查找:每一次查找都从中间的元素查起,根据比较的大小来折半,以此类推,直到最后找到该数2.二分查找的前提 确保查找的数组是排好序的数组,否则就会出错 如下图,假设我们要找的是200,箭头指向88,发现…

Fastjson 和Jackson 兼容性问题

起因是因为java类里面多层嵌套验证发现APIFOX调用接口验证无法生效 发现是因为没有赋值嵌套类 经过查看属性填充的源码,requestbody传参,用的是Fastjson的注解但是走到了AbstractJackson2HttpMessageConverter类的readJavaType方法 一查发现可能有不兼容的问题,Jackson 需要…