题解 | #接雨水问题#
接雨水问题
http://www.nowcoder.com/practice/31c1aed01b394f0b8b7734de0324e00f
双指针
刚开始的时候,我只考虑了只要后面的点比当前点小,就可以累加结果,如果大,就将后面的指针移过来,看了题解,恍然大悟
import java.util.*;
public class Solution {
public long maxWater (int[] arr) {
int n = arr.length;
long sum = 0;
int l = 0,r = n - 1;
while(l < r){
int mi = Math.min(arr[l],arr[r]);
while(l < r && arr[l] <= mi){
sum += mi - arr[l++];
}
while(l < r && arr[r] <= mi){
sum += mi - arr[r--];
}
}
return sum;
}
}