LeetCode 042 Trapping Rain Water
2014-08-15 10:26
561 查看
题目
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!
思路
1 难点是找到雨水积累的规律。
2 单个点X是否积水,要看左边的最高高度和右边的最高高度是否都比X的高度高;如果都高,那么肯定积水
3 单个点X积多少水?选择左边最高高度和右边最高高度当中最小的一个Y,Y-X即为这点积水。
4 由此可以得到思路。做两个数组来记录某点的左右最高高度即可。
代码
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!
思路
1 难点是找到雨水积累的规律。
2 单个点X是否积水,要看左边的最高高度和右边的最高高度是否都比X的高度高;如果都高,那么肯定积水
3 单个点X积多少水?选择左边最高高度和右边最高高度当中最小的一个Y,Y-X即为这点积水。
4 由此可以得到思路。做两个数组来记录某点的左右最高高度即可。
代码
public class Solution { public int trap(int[] A) { if(A.length<=2){ return 0; } int n = A.length; int[] left = new int ; int[] right = new int ; int max =0; for(int i=1;i<n;i++){ if(A[i-1]>max){ max = A[i-1]; } left[i]=max; } max =0; for(int i=n-2;i>=0;i--){ if(A[i+1]>max){ max = A[i+1]; } right[i]=max; } int sum =0; for(int i=0;i<n;i++){ if(A[i]<Math.min(left[i],right[i])){ sum+=Math.min(left[i],right[i])-A[i]; } } return sum; } }
相关文章推荐
- [LeetCode]042-Trapping Rain Water
- Java for LeetCode 042 Trapping Rain Water
- LeetCode 042 Trapping Rain Water
- [LeetCode]题解(python):042-Trapping Rain Water
- leetcode-042:Trapping Rain Water
- LeetCode题解——Trapping Rain Water
- Leetcode_trapping-rain-water(updated c++ and python version)
- [LeetCode][Java] Trapping Rain Water
- LeetCode - Trapping Rain Water
- [LeetCode] Trapping Rain Water
- leetcode:Trapping Rain Water
- [LeetCode] Trapping rain water
- Trapping Rain Water_Leetcode_#42
- Leetcode—— trapping-rain-water
- LeetCode:Trapping Rain Water
- LeetCode: Trapping Rain Water
- LeetCode(42)Trapping Rain Water
- [Leetcode]Trapping Rain Water
- leetcode Trapping Rain Water
- LeetCode Trapping Rain Water