1 题目

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

2 思路

这个题主要是要清楚, 接的最多的雨水总量为一个位置的最高水位减去这个位置的高度(也就是该位置的接水量)的总和, 而每一个位置的最高水位是其左边最高高度以及其右边最高高度两者取其小. 现在的问题变成了怎么确定每一个位置的左边最高高度和右边最高高度. 用动态规划的方法来确定.

代码:

int trap(vector<int>& height) {int height_size = height.size();int total = 0;if (height_size > 2) {vector<int> left_max(height_size, 0);vector<int> right_max(height_size, 0);left_max[0] = height[0];right_max[height_size - 1] = height[height_size - 1];for (int i = 1; i < height_size; i ++) {left_max[i] = max(left_max[i - 1], height[i]);}for (int i = height_size - 2; i >= 0; i --) {right_max[i] = max(right_max[i + 1], height[i]);total += min(left_max[i], right_max[i]) - height[i];}}return total;
}

leetcode42 --- trap相关推荐

  1. LeetCode42题动态规划 - 接雨水

    文章目录 理论 题目描述 思路分析 确定转换方程 确定初始值 从小到大依次计算 AC代码 总结 程序员如果仅满足curd的话,那么35岁危机很快就会到来.在大学期间学校主打的应该也都是算法思维.今天我 ...

  2. leetcode42.接雨水 动态规划、双指针

    leetcode42.接雨水 题目描述 思路 动态规划: 雨水能存储多少,取决于较短的那一边的高度,所以我们可以列举出每一列左右两边最短的"木板",从而即可求解每一列最多存储多少雨 ...

  3. LeetCode42. Trapping Rain Water

    LeetCode42. Trapping Rain Water 原题地址 题目描述 Given n non-negative integers representing an elevation ma ...

  4. shell --- trap 抓取信号

    1. 解决问题 针对部分运行在生产环境中的脚本来说,有一些脚本运行的过程是不能被中断的,比如:生产环境 定期备份脚本,为了保证备份安全,备份期间不能被 SIGTERM和SIGINT 之类的中断信号中断 ...

  5. zabbix snmp trap 监控

    I hate snmptrap!!! ################## snmptrap server端的配置 snmptrap server运行在zabbix server或proxy上 mkd ...

  6. trap信号捕捉命令介绍与shell结合实战讲解

    <--目录--> 1)trap介绍 2)trap信号列表 3)trap使用例子 4)测试INT(2)信号 5)同时测试多个信号 6)trap结合shell实战 7)执行脚本测试 [trap ...

  7. linux shell trap捕捉信号 附信号表 SIGTERM SIGKILL

    trap捕捉信号有三种形式 第一种: trap "commands" signal-list 当脚本收到signal-list清单内列出的信号时,trap命令执行双引号中的命令. ...

  8. 我使用过的Linux命令之trap - 在脚本中处理信号

    用途说明 trap是一个shell内建命令,它用来在脚本中指定信号如何处理.比如,按Ctrl+C会使脚本终止执行,实际上系统发送了SIGINT信号给脚本进程,SIGINT信号的默认处理方式就是退出程序 ...

  9. linux trap命令

    trap命令用于指定在接收到信号后将要采取的行动,我们将在本书后面的内容中详细介绍信号.trap命令的一种常见用途是在脚本程序被中断时完成清理工作.历史上,shell总是用数字来代表信号,而新的脚本程 ...

最新文章

  1. effectivec++条款18,让接口容易被正确使用,不宜被吴勇
  2. 2015-10-11 Sunday 晴 ARM学习
  3. 小王利用计算机设计了一个计算程序,七年级数学上册5.3代数式的值巧求计算机里的代数式的值素材(新版)青岛版...
  4. (课程学习笔记)Python基础学习
  5. ISE MAP报错: Unsupported programming for BSCAN block and JTAG_CHAIN attribute value 1的解决方法...
  6. CSS3 多列布局的column-gap 和 column-rule属性
  7. linux下无权限安装opencv3.4.6
  8. 内部办公网与IDC机房的GRE隧道配置实践
  9. 学了python可以干嘛-学 Python 都用来干嘛的?
  10. rpg服务器修改数据,ATOM RPG 修改数据方法 怎么修改游戏数据-游侠网
  11. Ice通信之Ice::Application
  12. javascript打飞机程序8x8x飞机大战
  13. 【笔记】基于TF-IDF 算法的文本相似度以衡量技术革新
  14. 复杂系统理论解释了Covid为何粉碎世界
  15. 个人完成案例之乐学成语(显示所有动物类成语的列表和每条成语的详细信息)
  16. 抢答网页PHP,GitHub - zhaiwenjun/vie-to-answer: 用于小型多人的线下知识竞赛活动的在线抢答器...
  17. Ubuntu18.04.4安装与配置,让老机焕发青春
  18. SpringBoot整合Keycloak实现单点登录
  19. js 金额千分位转换
  20. 【十八掌●武功篇】第十掌:Hive之基本语法

热门文章

  1. mysql和oracle的通用存储,MySQL与Oracle在使用上的一些区别
  2. python3 面向对象_Python3 面向对象
  3. commons-fileupload实现文件上传下载
  4. Hive小文件问题:如何产生、造成影响、解放办法
  5. 安卓逆向_24( 一 ) --- Hook 框架 frida( Hook Java层 和 so层) )
  6. 安卓逆向_15( 一 ) --- JNI 和 NDK
  7. Java并发编程实战~Immutability模式
  8. linux汇编字符长怎么看,linux – 在内联GNU汇编程序中获取字符串长...
  9. matlab 建立ctruct,扩频通信系统及MATLAB仿真1
  10. java获取本机ipv4,并使用Google Guava 缓存