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. 七周三次课(11月29日) 10.11 Linux网络相关 10.12 firewalld和netfilter 10.13 netfilter5表5链介绍 10.14 iptables语法...
  2. php的数组与字符串的转换函数整理
  3. springcloud(七):配置中心svn示例和refresh
  4. 在ASP.Net2.0中使用UrlRewritingNet实现链接重写
  5. 读tomcat源码,随笔类图
  6. 前端学习(1800):前端调试之清除浮动练习2
  7. MySQL查询数据详细
  8. 技嘉linux支持的主板型号,详细解读主板厂商命名规则——技嘉篇
  9. 牛客 彩虹 【经典状压dp】
  10. Unity2019配置ARCore环境
  11. Astah 7.2 安装
  12. colorAccent,colorPrimary,colorPrimaryDark……来这里你就明白了
  13. Quality Trimming Via Trimmomatic
  14. react中使用eslint+prettier+airbnb校验代码风格
  15. Cocos2d-x学习(七):cocos2d-x中ScrollView的简单实现
  16. excel乘法公式怎么输入_智能考勤表,MM你再也不用加班了!【Excel教程】
  17. 数字格式化、大数据BigDecimal、随机数生成方法random()
  18. Android webview和HTML的JS交互
  19. Unity3d中最简单物体的旋转移动
  20. html下拉式日历,C#实现日历样式的下拉式计算器

热门文章

  1. l360废墨收集垫清零_知识分享003:EPSON L360打印机出现故障-废墨计数清零
  2. QT+OpenCV综合示例:载入、读取图片
  3. Python爬取网页
  4. 利用gitbash上传项目到github
  5. wireshark、tcpdump、dsniff、Ettercap、NetStumbler、netsniff-ng
  6. 简明Python教程学习笔记_1_基本
  7. PDF签名系列(1):PDF签名机制的漏洞分析
  8. EasyMock 简介
  9. c语言assign用法,object-c语言的nonatomic,assign,copy,retain的区别
  10. 二维数组 类型_Java第六章 | 二维数组的创建及使用、数组排序算法