public class Solution {
public int trap(int[] A) {
int[] maxL = new int[A.length];
int[] maxR = new int[A.length];
int max = 0;
// Go left and find left max height for current point
for (int i=0; i<A.length; i++){
maxL[i] = max;
if (max<A[i]){
max=A[i];
}
}
max = 0;
// Go right and find right max height for current point
for (int i=A.length-1; i>=0; i--){
maxR[i] = max;
if (max<A[i]){
max = A[i];
}
}
int capacity = 0;
// Iterate through A, capacity of current point = min (maxLeftHeight, maxRightHeight) - currentHeight
for (int i=0; i<A.length; i++){
int c = Math.min(maxL[i], maxR[i]) - A[i];
if (c>0) {
capacity+=c;
}
}
return capacity;
}
}
Trapping Rain Water
最新推荐文章于 2019-05-30 16:26:54 发布