题解 | #接雨水问题#

接雨水问题

http://www.nowcoder.com/practice/31c1aed01b394f0b8b7734de0324e00f

双指针

刚开始的时候,我只考虑了只要后面的点比当前点小,就可以累加结果,如果大,就将后面的指针移过来,看了题解,恍然大悟

alt

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;
    }
}
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务