[leetcode 42] Trapping Rain Water
2015-01-02 12:04
295 查看
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
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!
思路:首先找到最高的柱子i, 用最高的柱子将其划分为左右两个部分。
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!
思路:首先找到最高的柱子i, 用最高的柱子将其划分为左右两个部分。
class Solution { public: int trap(int A[], int n) { int res = 0; int highest = -1; int index = -1; for (int i = 0; i < n; i++) { if (highest < A[i]) { highest = A[i]; index = i; } } for (int i = 0, peek = 0; i < index; i++) { //当前位置储水 if (peek > A[i]) { res += peek - A[i]; } //i+1位置左边最高点,只有左右都高,此处才能蓄水 peek = max(peek, A[i]); } for (int i = n - 1, peek = 0; i > index; i--) { if (peek > A[i]) { res += peek - A[i]; } peek = max(peek, A[i]); } return res; } };
相关文章推荐
- Leetcode 42 Trapping Rain Water
- [LeetCode 42] Trapping Rain Water
- leetcode[42]Trapping Rain Water
- LeetCode 42 Trapping Rain Water
- LeetCode---(42)Trapping Rain Water
- LeetCode_OJ【42】Trapping Rain Water
- LeetCode 42 - Trapping Rain Water
- [Leetcode 42, Hard] Trapping Rain Water
- Leetcode 42 Trapping Rain Water
- Java [Leetcode 42]Trapping Rain Water
- LeetCode 42 --- Trapping Rain Water
- LeetCode 42 Trapping Rain Water
- LeetCode(42)--Trapping Rain Water
- leetcode hard模式专杀之42. Trapping Rain Water
- leetcode-trapping rain water
- [LeetCode] Trapping Rain Water
- leetcode 42:Trapping Rain Water
- 【leetcode】Trapping Rain Water
- LeetCode_42---Trapping Rain Water
- [LeetCode] Trapping Rain Water