数组最大蓄水量问题(JAVA实现)

  public static int maxWater(int[] arr){
        if (arr == null || arr.length <= 2) {
            return 0;
        }
        int left = arr[0];
        int[] right = new int[arr.length];
        int max = 0;
        for (int i = arr.length - 1; i >=0; i--){
            if (arr[i] > max) {
                right[i] = arr[i];
                max = arr[i];
            } else {
                right[i] = max;
            }
        }
        int res = 0;
        for (int i = 1; i < arr.length - 1; i++){
            if (arr[i] > left) {
                left = arr[i]; 
            }
            res += Math.max(Math.min(left, right[i]) - arr[i], 0);
        }
        return res;
    }

猜你喜欢

转载自www.cnblogs.com/macyzhang/p/9860143.html
今日推荐