每日一题(接雨水) | 刷题打卡

135 阅读1分钟

掘金团队号上线,助你 Offer 临门! 点击 查看详情

一、题目描述
给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。

二、思路分析
暴力解法:找出下雨后雨水能到达的最高位置等于该元素两边最大高度的较小值减去当前高度.
三、AC代码

class Solution {
    public int trap(int[] height) {
        int result = 0;
        for(int i = 0; i<height.length;i++){
            int m = i;
            int n = i;
            int maxLeft = height[i];
            int maxRight = height[i];
            while(m >= 0){
                maxLeft = Math.max(maxLeft,height[m--]);
            }
            while(n<height.length){
                maxRight = Math.max(maxRight,height[n++]);
            }
            result += Math.min(maxLeft,maxRight)-height[i];
        }
        return result;
    }
}

四、总结
找规律.