题解 | #接雨水问题#

接雨水问题

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

相关推荐

11-04 14:10
东南大学 Java
_可乐多加冰_:去市公司包卖卡的
点赞 评论 收藏
分享
10-24 13:36
门头沟学院 Java
Zzzzoooo:更新:今天下午有hr联系我去不去客户端,拒了
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务