42. Trapping Rain Water
来源:互联网 发布:漓江学院 知乎 编辑:程序博客网 时间:2024/05/17 04:03
此道题目不太好想,看了答案才明白。中心思想是:每个bar头顶能接多少水,取决于它两边有没有比自己高的两个bar。有的话,这个bar头顶就能够存住水,可以存住的水的体积为(比自己高的两个bar之中较短的那个bar高度-这个bar的高度)*1。然后就要考虑,怎么求每个bar左边最高bar及右边最高bar的高度。其实用DP就可以了,这个跟LIS很像。代码如下。
class Solution {public: int trap(vector<int>& A) { int n = A.size(); int res = 0; vector<int>rightMax (n);//bar右边最高的bar的高度 int maxv = 0; for(int i = n-1; i >= 0; i--) { rightMax[i] = maxv; // 最右边的bar其右边最高bar的高度肯定为0 if(maxv < A[i]) maxv = A[i]; } maxv = 0; int conHeight; for(int i = 0; i < n; i++) {//此时maxv为bar i左边最高的bar的高度 conHeight = min(maxv, rightMax[i]); // 左右最高bar较短的bar的高度 if(conHeight > A[i]) res += conHeight - A[i]; if(maxv<A[i]) maxv=A[i]; } return res; }};
0 0
- 42.Trapping Rain Water
- 42. Trapping Rain Water
- 42. Trapping Rain Water
- 42. Trapping Rain Water
- 42. Trapping Rain Water
- 42. Trapping Rain Water
- 42. Trapping Rain Water
- 42. Trapping Rain Water
- 42. Trapping Rain Water
- 42. Trapping Rain Water
- 42. Trapping Rain Water
- 42. Trapping Rain Water
- 42. Trapping Rain Water
- 42. Trapping Rain Water
- 42. Trapping Rain Water
- 42. Trapping Rain Water
- 42. Trapping Rain Water
- 42. Trapping Rain Water
- OC基础回顾(七)Foundation Kit 框架
- C# TreeView的使用以及节点的拖动
- 有向图的强连通分量(SCC)
- XMPP的基础知识
- Objective-C学习笔记(四)——OC实现最简单的数学运算
- 42. Trapping Rain Water
- Spring(二)编码剖析Spring对JavaBean的管理
- Android API Guides 阅读笔记(1)----Application Fundamentals
- 关于java基础--日期类与日历类Calendar详解测试
- nyoj17单调递增最长子序列
- java容易忽略的基础知识
- session的细节讨论
- VW命令行参数
- Android小记:SpannableString