力扣——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.接雨水(困难难度)——条条大路通罗马相关推荐

  1. 【题解】【AcWing】1577. 条条大路通罗马

    1577. 条条大路通罗马 原题传送:AcWing 1577. 条条大路通罗马 从我们的城市到达罗马有许多不同的旅游路线. 请你在成本最低的旅游路线之中,找到使得游客幸福感最强的路线. 输入格式 第一 ...

  2. 力扣——174.地下城游戏(困难难度)——万能的递归与动态分析

    力扣--174. 地下城游戏 一.算法目录合集 1.地址 2.说明 二.题目说明 1.题干 2.原地址 三.实现步骤 1.思路分析 1.1.分析问题 1.2.具体步骤 ① 特殊情况分析 ② 常规分析 ...

  3. 条条大路通罗马LS-GAN:把GAN建立在Lipschitz密度上

    最近很多关心深度学习最新进展,特别是生成对抗网络的朋友可能注意到了一种新的GAN-- Wasserstein GAN.其实在WGAN推出的同时,一种新的LS-GAN (Loss Sensitive G ...

  4. LS-GAN作者诠释新型GAN:条条大路通罗马,把GAN建立在Lipschitz密度上

    最近很多关心深度学习最新进展,特别是生成对抗网络的朋友可能注意到了一种新的GAN-- Wasserstein GAN.其实在WGAN推出的同时,一种新的LS-GAN (Loss Sensitive G ...

  5. PAT条条大路通罗马

    题目描述 Indeed there are many different tourist routes from our city to Rome. You are supposed to find ...

  6. 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 ...

  7. 条条大路通罗马:mPaaS 新增体验入口

    近日,移动开发平台 mPaaS 体验入口正式上线「知晓云」官网,用户进入控制台创建应用后,即可体验尝鲜. 而本文也将从 mPaaS 小程序框架解析展开,分享其如何帮助开发者实现"小程序代码仅 ...

  8. 条条大路通云端,华为云应用平台ROMA破解传统政企上云困境

    条条大路通云端,华为云应用平台ROMA破解传统政企上云困境 宁川 云科技时代 今天 (华为云CTO张宇昕在2020华为云TechWave技术峰会上发布应用平台ROMA等重磅产品) 到2020年,集成工 ...

  9. 【栈】python、单调栈解决收集雨水问题、力扣42题

    以下是leetcode 42原题: 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水. 示例 1: 输入:height = [0,1,0,2,1,0,1 ...

最新文章

  1. Tengine高性能部署之—日志分割
  2. 安装模拟器遇到的问题
  3. [case12]演进式架构
  4. 18岁的他从月薪2000到月薪11000经历了什么?
  5. Supervisor 进程管理工具
  6. html长文本自动换行
  7. 使用循环语句判定用户账号密码输入三次是否正确
  8. Android P DP1:WiFi-RTT、刘海、多摄像头、GIF动画、NNAPI 1.1
  9. My story with XJTLU Library
  10. 【Vegas原创】Oracle批量create、Lock user的方法
  11. android读取剪切板的方法,Android10中获取剪切板内容
  12. 计算机网络定义记不住,win10下微软拼音输入法记不住自定义输入词语怎么办
  13. element Descriptions 内容超出隐藏 Tooltip展示完整内容
  14. 计算机网络跳槽自荐信,计算机网络应用专业求职自荐信范文
  15. 博士申请 | 帝国理工学院Stefan Vlask教授招收机器学习方向全奖博士生
  16. 一种绝对提高开发水平的方法(转)
  17. 软件测试周刊(第12期):程序员在晋升之后会发生什么?
  18. 统计机器学习相关性分析
  19. Axure-图片放大缩小
  20. 电脑软件能截图无法发送(钉钉截图无法发送,微信能截图但是发送带虚线obj的文件,看不了照片)

热门文章

  1. 男孩报计算机网络技术专业,男孩大学报什么专业比较好
  2. MAC电脑SecureCRT配色方案
  3. 百度知道变形金刚js源码
  4. Web中JS(Javascript)解析JSON数据的方法
  5. INPUT标签选择器和使用、jquery过滤器
  6. BZOJ_P2461 [BeiJing2011]符环(动态规划/记忆化搜索)
  7. Flutter 仿滴滴出行App
  8. uni-app实战之社区交友APP(17)账号模块和文章列表实现
  9. 组播MAC和单播MAC地址区别
  10. codesys com库_WAGO CODESYS库文件保证系统顺畅运行