本文为senlie原创。转载请保留此地址:http://blog.csdn.net/zhengsenlie

Trapping Rain Water

Total Accepted: 14568 Total Submissions: 50810My Submissions

Given n non-negative integers representing an elevation map where the width of each bar is 1, compute how much water it is able to trap after raining.

For example, 
Given [0,1,0,2,1,0,1,3,2,1,2,1], return 6.

The above elevation map is represented by array [0,1,0,2,1,0,1,3,2,1,2,1]. In this case, 6 units of rain water (blue section) are being trapped. Thanks Marcos for contributing this image!

题意:有一个代表 n 根柱子高度的数组A[i],计算这些柱子之间的槽可以储蓄的最大水量
思路:左右 dp
用一个数组 left[i] 表示第 i 根柱子左边最高的柱子的高度
用一个数组 right[i] 表示第 i 根柱子右边最高的柱子的高度
1.从左到右扫描。left[i] = max(left[i - 1], A[i - 1])
2.从右到左扫描。right[i] = max(right[i + 1], A[i + 1])
3.第 i 根柱子上能储蓄的水为 min(left[i], right[i]) - A[i],由于这时 left[i] 已经没用了,能够用它来存放这个值。
复杂度:时间O(n)。 空间O(n)

相关题目:

Candy

int trap(int A[], int n){if (n == 3) return 0;vector<int> left(n, 0), right(n, 0);for(int i = 1; i < n - 1; ++i) left[i] = max(left[i - 1], A[i - 1]);for(int i = n - 2; i > 0; --i) {right[i] = max(right[i + 1], A[i + 1]);left[i] = min(left[i], right[i]) - A[i];}int sum = 0;for_each(left.begin() + 1, left.end() - 1, [&sum](int c){if(c > 0) sum += c;});return sum ;
}

转载于:https://www.cnblogs.com/jzdwajue/p/7112306.html

Leetcode 动态规划 Trapping Rain Water相关推荐

  1. 【重点:DP 双指针 栈】LeetCode 42. Trapping Rain Water

    LeetCode 42. Trapping Rain Water 本博客转载自:http://www.cnblogs.com/grandyang/p/4402392.html [自己又不会做,抄的-& ...

  2. leetcode#42 Trapping rain water的五种解法详解

    leetcode#42 Trapping rain water 这道题十分有意思,可以用很多方法做出来,每种方法的思想都值得让人细细体会. 42. Trapping Rain Water Given ...

  3. LeetCode 42. Trapping Rain Water 【两种解法】(python排序遍历,C++ STL map存索引,时间复杂度O(nlogn))

    LeetCode 42. Trapping Rain Water Python解法 解题思路: 本思路需找到最高点左右遍历,时间复杂度O(nlogn),以下为向左遍历的过程. 将每一个点的高度和索引存 ...

  4. 【重点:BFS】LeetCode 407. Trapping Rain Water II

    LeetCode 407. Trapping Rain Water II 博客转载自:http://www.cnblogs.com/grandyang/p/5928987.html [太难了,被智商碾 ...

  5. LeetCode 42 Trapping Rain Water 收集雨水

    LeetCode 42 Trapping Rain Water 收集雨水 Given n non-negative integers representing an elevation map whe ...

  6. Leetcode 407. Trapping Rain Water II 收集雨水2 解题报告

    1 解题思想 我看了下题目,发现比预想中的简单,加之我比较烂,所以其实我还是没做,只是看懂了上回贴的代码,然后做了一下注释,现在我来讲下题目. 首先请看下上一题,上一题是2D的这题是3D的: Leet ...

  7. LeetCode 42. Trapping Rain Water(收集雨水Ⅰ)

    题目描述: Given n non-negative integers representing an elevation map where the width of each bar is 1, ...

  8. Java for LeetCode 042 Trapping Rain Water

    Given n non-negative integers representing an elevation map where the width of each bar is 1, comput ...

  9. [LeetCode]42. Trapping Rain Water雨水填坑

    这个题难点在于无法保证右边是不是有更高的墙可以保证挡住水 双指针可以解决 /*两边指针保证,保证另外一边肯定有能挡住水的地方.如果从一边开始,不考虑另一边,是无法保证右边肯定有挡水的墙,如果右边只都比 ...

最新文章

  1. https Java SSLException protocol_version的问题解决方法
  2. 【以太坊】web3.js的1.0版本和0.2.0版本的安装及区别
  3. GDCM:DICOM转储到SQLITE3的测试程序
  4. 传统IDC为什么要上云计算平台篇之一
  5. 618技术特辑(四)疯狂剁手的同时,电商隐私安全你注意到了吗?
  6. Git查看与修改用户名、邮箱(转载)
  7. ROS Kinetic 安装指南
  8. 【Paper】AAAI 2020 故事生成模型 之 角色一致性
  9. 拓端tecdat|Python在线零售数据关联规则挖掘Apriori算法数据可视化
  10. 关于:在 Office 2021 中自定义模板
  11. HTML5七夕情人节表白网页制作【满天星空3D相册】HTML+CSS+JavaScript 3D动态相册网页代码
  12. 转载《2020年校招面经心得》
  13. 树莓派系统烧录 + 连接树莓派
  14. 【第八期送书活动】+ 购书福利
  15. 一、酷狗 歌词搜索 Indy TIdhttp
  16. 从资源爬取到个人微信公众号开发:使用 Python 打造公众号电影搜索器
  17. 通过神经网络实现线性回归模型预测水泥强度
  18. 北京社保卡和医疗存折(萌新看)
  19. 计算机图形学:二维图形的几何变换(算法原理及代码实现)
  20. 牛散村:国内低代码平台有哪些?low code平台整理分享!

热门文章

  1. 设置git协议clone代理
  2. android reboot 定时重启可靠吗,请教一下有人做过安卓系统 reboot 重启之后,appium 能自动重新连接吗...
  3. Linus中帮助命令man
  4. MYSQL 定时自动执行任务
  5. 浏览器缓存知识小结及应用
  6. 内连接(INNER JOIN)
  7. 使用ESCAPE定义转义符
  8. Java给定一个字符串数组,判断每个字符出现次数
  9. 对数据可视化的理解_使数据可视化更容易理解
  10. ux和ui_糟糕的UI与UX番茄酱模因