LeetCode | Trapping Rain Water
来源:互联网 发布:淘宝店经营地址怎么写 编辑:程序博客网 时间:2024/06/10 01:57
题目:
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!
思路:
首先从两边向中间找到最高的那一根柱子。然后从两边分别向中间移动并灌水。我们用floor来表示当前水平面,如果水平面比柱子高,那么这个区域可以灌水;如果水平面比柱子低,那么向里的水平面可以增加。
代码:
class Solution {public: int trap(int A[], int n) { if(n<2) return 0; int highest=A[0]; int hindex = 0; for(int i=1;i<n;i++) { if(A[i]>highest) { highest = A[i]; hindex = i; } } int water=0; int floor=0;; for(int i=0;i<hindex;i++) { if(floor>=A[i]) { water+=floor-A[i]; } else { floor=A[i]; } } floor=0;; for(int i=n-1;i>hindex;i--) { if(floor>=A[i]) { water+=floor-A[i]; } else { floor=A[i]; } } return water; }};
0 0
- LeetCode: Trapping Rain Water
- LeetCode : Trapping Rain Water
- [LeetCode] Trapping Rain Water
- [Leetcode] Trapping Rain Water
- [Leetcode] Trapping Rain Water
- [LeetCode]Trapping Rain Water
- LeetCode-Trapping Rain Water
- [leetcode] Trapping Rain Water
- [LeetCode] Trapping rain water
- Leetcode: Trapping Rain Water
- Leetcode:Trapping Rain Water
- [LeetCode] Trapping Rain Water
- <Leetcode>Trapping Rain Water
- Leetcode Trapping Rain Water
- leetcode Trapping Rain Water
- leetcode Trapping Rain Water
- LeetCode Trapping Rain Water
- LeetCode | Trapping Rain Water
- 【Lenskit】eclipse创建lenskit的maven项目
- linux操作系统初步认识(三)
- IOS中关于色值的问题
- 浙大ZOJ 1004 Anagrams by Stack问题解决
- php解析gzip
- LeetCode | Trapping Rain Water
- MySql 数据表不识别
- Android实现多个TextView同时显示跑马灯效果
- jacob操作简介
- Android 获取assets的绝对路径
- css 四种定位方式
- Oracle插入数据并获取自增长序列ID方法
- Android4.0中蓝牙适配器state machine(状态机)的分析
- AdaBoost原理,算法实现