力扣-42.接雨水
题目链接
42.接雨水
class Solution {public int trap(int[] height) {int[] leftMax = new int[height.length];int left = 0;for (int i = 0; i < height.length; i++) {left = Math.max(left, height[i]);leftMax[i] = left;}int[] rightMax = new int[height.length];int right = 0;for (int i = height.length - 1; i >= 0; i--) {right = Math.max(right, height[i]);rightMax[i] = right;}int sum = 0;for (int i = 0; i < height.length; i++) {sum += Math.min(leftMax[i], rightMax[i]) - height[i];}return sum;}
}
小结:又是很巧妙的一道题,每个位置i
能接的雨水量取决于:它左边的最高柱子leftMax[i]
,它右边的最高柱子rightMax[i]
,它自己的高度height[i]
。