力扣42. 接雨水 (暴力法)

思路就是我的世界放水块,遍历数组所有元素,在该位置放水块,水能落进去并且存住就加到sum中(此过程不考虑别的位置)。

class Solution {
    
    
    public int trap(int[] height) {
    
    
        int sumWater = 0;
        for(int i = 1;i < height.length -1;i++){
    
    
            int leftMaxHeight = 0;
            int rightMaxHeight = 0;
            for(int j = i-1;j >= 0;j--)
                leftMaxHeight = Math.max(leftMaxHeight,height[j]);
            for(int j = i+1;j <height.length;j++)
                rightMaxHeight = Math.max(rightMaxHeight,height[j]);
            sumWater += Math.max(Math.min(leftMaxHeight,rightMaxHeight)-height[i],0);//看了官方题解后发现Math.max有点多余,因为在找左右最大值时就确保了左右最大值一定大于等于该处的值,不会出现相减出现负数的问题。
        }
        return sumWater;
    }
}

猜你喜欢

转载自blog.csdn.net/m0_45311187/article/details/110808187