LeetCode Trapping Rain Water
2014-10-30 00:35
351 查看
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!
找到最长的那块木板,假设其下标为maxIdx。
分别从左侧和右侧向其逼近。
在左侧逼近过程中:
如果一个木板的长度小于已经遍历的最大长度max,即max>该木板<maxIdx,所以在该木板位置能存max - 该木板长度的水量(左右两侧各有一个木板长于它)。
如果一个木板的长度大于已经遍历的最大长度max,即max<该木板<maxIdx,所以在该木板位置不能存水(因为左右两侧只有一个木板(maxIdx)长于它)。更新max值。
右侧逼近过程与左侧相似。
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!
找到最长的那块木板,假设其下标为maxIdx。
分别从左侧和右侧向其逼近。
在左侧逼近过程中:
如果一个木板的长度小于已经遍历的最大长度max,即max>该木板<maxIdx,所以在该木板位置能存max - 该木板长度的水量(左右两侧各有一个木板长于它)。
如果一个木板的长度大于已经遍历的最大长度max,即max<该木板<maxIdx,所以在该木板位置不能存水(因为左右两侧只有一个木板(maxIdx)长于它)。更新max值。
右侧逼近过程与左侧相似。
public class Solution { public int trap(int[] A) { if (A.length<3) { return 0; } int len=A.length; int maxIndex=0; //找出最大值的下标 for (int i = 0; i < len; i++) { if (A[i]>A[maxIndex]) { maxIndex=i; } } int leftMax=0; int rightMax=0; int water=0; for (int i = 0; i < maxIndex; i++) { if (leftMax>A[i]) { water=water+leftMax-A[i]; }else { leftMax=A[i]; } } for (int i = len-1; i > maxIndex; i--) { if (rightMax>A[i]) { water=water+rightMax-A[i]; }else { rightMax=A[i]; } } return water; } }
相关文章推荐
- LeetCode-Trapping Rain Water
- 37_leetcode_Trapping Rain water
- LeetCode---(42)Trapping Rain Water
- [LeetCode]Trapping Rain Water
- leetcode Trapping Rain Water
- leetcode_Trapping Rain Water
- leetCode Trapping Rain Water
- LeetCode042 Trapping Rain Water
- leetcode-trapping rain water
- LeetCode(8) - Trapping Rain Water
- Leetcode 42 Trapping Rain Water
- LeetCode_OJ【42】Trapping Rain Water
- 【34.7】【H】【leetcode】Trapping Rain Water
- [leetcode]Trapping Rain Water
- [leetcode] Trapping Rain Water
- LeetCode | Trapping Rain Water
- [Leetcode] Trapping Rain Water
- [LeetCode]Container With Most Water、Trapping Rain Water
- leetcode 042 —— Trapping Rain Water
- LeetCode 111 Trapping Rain Water