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
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.
Solution:
public class Solution { public int trap(int[] A) { int max = 0; int maxIndex=0; for(int i=0; i< A.length; i++) { if(A[i]>max) { max = A[i]; maxIndex = i; } } int prevMax = 0; int count = 0; for(int i=0; i<maxIndex; i++) { if(A[i]>prevMax) prevMax = A[i]; count += prevMax - A[i]; } prevMax = 0; for(int i=A.length-1; i>maxIndex; i--) { if(A[i]>prevMax) prevMax = A[i]; count += prevMax -A[i]; } return count; } }
No comments :
Post a Comment