本文共 755 字,大约阅读时间需要 2 分钟。
class Solution { public int trap(int[] height) { if(height == null || height.length == 0) { return 0; } int[] leftMax = new int[height.length]; int[] rightMax = new int[height.length]; int ans = 0; int size = height.length; leftMax[0] = height[0]; //动态规划记录当前位置左边最大的数 for(int i = 1; i <= size - 2; i++) { leftMax[i] = Math.max(height[i], leftMax[i - 1]); } rightMax[size - 1] = height[size - 1]; //动态规划记录当前位置右边最大的数 for(int j = size - 2; j >= 1; j--) { rightMax[j] = Math.max(height[j], rightMax[j + 1]); } //左边最大的和右边最大的取两者较小的减去自己 for(int i = 1; i <= size - 2; i++) { ans += Math.min(leftMax[i], rightMax[i]) - height[i]; } return ans; } }
转载地址:http://vahzi.baihongyu.com/