java刷题--42接雨水

Posted Anrys

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java刷题--42接雨水相关的知识,希望对你有一定的参考价值。

java刷题--42接雨水

题目

在这里插入图片描述

代码

暴力法

class Solution {
    public int trap(int[] height) {
        int ans = 0;
        int size = height.length;
        for (int i = 1; i < size - 1; i++) {
            int max_left = 0, max_right = 0;
            for (int j = i; j >= 0; j--) { //Search the left part for max bar size
                max_left = Math.max(max_left, height[j]);
            }
            for (int j = i; j < size; j++) { //Search the right part for max bar size
                max_right = Math.max(max_right, height[j]);
            }
            ans += Math.min(max_left, max_right) - height[i];
        }
        return ans;
    }
}

动态规划–道理都是一样的

class Solution {
    public int trap(int[] height) {
        int n = height.length;
        if (n == 0) return 0 ;
        int[] leftMax = new int[n];
        leftMax[0] = height[0];
        for (int i = 1; i < n; i++) {
            leftMax[i] = Math.max(leftMax[i - 1], height[i]);
        }

        int[] rightMax = new int[n];
        rightMax[n - 1] = height[n - 1];
        for (int i = n - 2; i >= 0; --i) {
            rightMax[i] = Math.max(rightMax[i + 1], height[i]);
        }

        int ans = 0;
        for (int i = 0; i < n; ++i) {
            ans += Math.min(leftMax[i], rightMax[i]) - height[i];
        }
        return ans;
    }
}

结果

在这里插入图片描述
在这里插入图片描述

以上是关于java刷题--42接雨水的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode——42. 接雨水(Java)

Leetcode刷题接雨水

leetcode 每日一题 42. 接雨水

leetcode 每日一题 42. 接雨水

每日一题:42. 接雨水

42. 接雨水