力扣——42.接雨水(困难难度)——条条大路通罗马
力扣——42.接雨水
- 一、算法目录合集
- 1.地址
- 2.说明
- 二、题目说明
- 1.题干
- 2.原地址
- 三、实现步骤
- 1.思路分析
- 1.1.分析问题
- 1.2.转化问题
- 1.3.简化问题
- 1.4.具体步骤
- ① 特殊情况分析
- ② 常规分析
- ③ 分类分析
- 2.代码实现
- 2.1 方法代码
- 2.2 测试部分代码
- 2.3 耗用资源情况
- 四、官方题解
- 1.原地址
- 2.方法一——暴力
- 思路分析
- 代码实现(C++)
- 复杂度
- 3.方法二——动态编程
- 思路分析
- 代码实现
- 复杂度
- 4.方法三——栈的应用
- 思路分析
- 代码实现
- 复杂度
- 5.方法四——使用双指针
- 思路分析
- 代码实现
- 复杂度
一、算法目录合集
1.地址
算法目录合集
2.说明
该地址指向所有由本人自己所经历的算法习题(也有可能仅仅是一个入门的案例或者是经典案例),仅仅为我做过而且比较有意思的,也许还会有一些我自己想出来的,出于兴趣写在这里,具体格式我会在下面列明,总目录也会在这里出现,方便查阅以及自己进行复习回顾。
二、题目说明
1.题干
给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。
上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 感谢 Marcos 贡献此图。
示例:
输入: [0,1,0,2,1,0,1,3,2,1,2,1]
输出: 6
2.原地址
42.接雨水
三、实现步骤
1.思路分析
对于这个题,其实解决方法挺多的,双指针,动态分析等;我这里用一个递归的方法来求,原题比较不太容易看出来这个思路,我画一个新的图,下面的图分别是空桶和最大限度装满水的情况:
空桶
满水
这个图的层数稍微高了一点儿,柱子与柱子之间的距离有些刻意空开,这样比较直观地展现思路。
有些人会被题目误导,产生一个惯性思维:题目叫“接雨水”,那我就看看是什么样的填充方法可以满足要求?试试从下往上吧,于是在他心里,就有了这么一个过程:
其实这种思路也不能说是一种错误思路,因为完全是可以实现的,先把最左边的1和最右边的1找到,那么最中间的0肯定都是要变成1的,因为他们都被填上了水……以此类推,一直填到最高处,那么如果一个数组中只有一个数字呢,比如只有一个2,那么怎么操作呢,那就只能找比他高一位的了——3,这样最左侧的2和最右侧的3之间所有的比2小的填充为2,再这么进行下去,一直到最高的柱子,最终得到的就是结果了,把总值减去之前的总值,就是填充部分的雨水面积,只不过这种方法需要每次判定最右侧的柱子到底怎么选择,比较麻烦,不推荐。
下面提供一种我想的解题思路:
1.1.分析问题
首先要分析一下,怎么才能方便地去填水呢?不知道大家见过这个模型没:香槟塔!
香槟塔矢量图(图片来自千库网)
香槟塔(图片来自百度)
没错,就是这么个东西,这是怎么倒酒的?你没见过一个人拿个香槟一个杯子一个杯子挨个倒吧?
力扣——42.接雨水(困难难度)——条条大路通罗马相关推荐
- 【题解】【AcWing】1577. 条条大路通罗马
1577. 条条大路通罗马 原题传送:AcWing 1577. 条条大路通罗马 从我们的城市到达罗马有许多不同的旅游路线. 请你在成本最低的旅游路线之中,找到使得游客幸福感最强的路线. 输入格式 第一 ...
- 力扣——174.地下城游戏(困难难度)——万能的递归与动态分析
力扣--174. 地下城游戏 一.算法目录合集 1.地址 2.说明 二.题目说明 1.题干 2.原地址 三.实现步骤 1.思路分析 1.1.分析问题 1.2.具体步骤 ① 特殊情况分析 ② 常规分析 ...
- 条条大路通罗马LS-GAN:把GAN建立在Lipschitz密度上
最近很多关心深度学习最新进展,特别是生成对抗网络的朋友可能注意到了一种新的GAN-- Wasserstein GAN.其实在WGAN推出的同时,一种新的LS-GAN (Loss Sensitive G ...
- LS-GAN作者诠释新型GAN:条条大路通罗马,把GAN建立在Lipschitz密度上
最近很多关心深度学习最新进展,特别是生成对抗网络的朋友可能注意到了一种新的GAN-- Wasserstein GAN.其实在WGAN推出的同时,一种新的LS-GAN (Loss Sensitive G ...
- PAT条条大路通罗马
题目描述 Indeed there are many different tourist routes from our city to Rome. You are supposed to find ...
- 1577. 条条大路通罗马 Java题解 (dijkstra综合应用,map)【PAT甲级1087】
输入样例: 6 7 HZH ROM 100 PKN 40 GDN 55 PRS 95 BLN 80 ROM GDN 1 BLN ROM 1 HZH PKN 1 PRS ROM 2 BLN HZH 2 ...
- 条条大路通罗马:mPaaS 新增体验入口
近日,移动开发平台 mPaaS 体验入口正式上线「知晓云」官网,用户进入控制台创建应用后,即可体验尝鲜. 而本文也将从 mPaaS 小程序框架解析展开,分享其如何帮助开发者实现"小程序代码仅 ...
- 条条大路通云端,华为云应用平台ROMA破解传统政企上云困境
条条大路通云端,华为云应用平台ROMA破解传统政企上云困境 宁川 云科技时代 今天 (华为云CTO张宇昕在2020华为云TechWave技术峰会上发布应用平台ROMA等重磅产品) 到2020年,集成工 ...
- 【栈】python、单调栈解决收集雨水问题、力扣42题
以下是leetcode 42原题: 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水. 示例 1: 输入:height = [0,1,0,2,1,0,1 ...
最新文章
- Tengine高性能部署之—日志分割
- 安装模拟器遇到的问题
- [case12]演进式架构
- 18岁的他从月薪2000到月薪11000经历了什么?
- Supervisor 进程管理工具
- html长文本自动换行
- 使用循环语句判定用户账号密码输入三次是否正确
- Android P DP1:WiFi-RTT、刘海、多摄像头、GIF动画、NNAPI 1.1
- My story with XJTLU Library
- 【Vegas原创】Oracle批量create、Lock user的方法
- android读取剪切板的方法,Android10中获取剪切板内容
- 计算机网络定义记不住,win10下微软拼音输入法记不住自定义输入词语怎么办
- element Descriptions 内容超出隐藏 Tooltip展示完整内容
- 计算机网络跳槽自荐信,计算机网络应用专业求职自荐信范文
- 博士申请 | 帝国理工学院Stefan Vlask教授招收机器学习方向全奖博士生
- 一种绝对提高开发水平的方法(转)
- 软件测试周刊(第12期):程序员在晋升之后会发生什么?
- 统计机器学习相关性分析
- Axure-图片放大缩小
- 电脑软件能截图无法发送(钉钉截图无法发送,微信能截图但是发送带虚线obj的文件,看不了照片)