丰台网站开发联系电话,湖北省建设主管部门网站,wordpress鼠标跟随,网站服务器怎么搭建描述 分析
i位置能积累的雨水量#xff0c;等于其左右两边最大高度的最小值。为了能获取i位置左右两边的最大高度。使用动态规划。两个dp数组#xff1a;
leftMaxrightMax
其中
leftMax[i] 代表i位置左边的最大高度rightMax[i] 代表i位置右边的最大高度
初始状态#x…
描述 分析
i位置能积累的雨水量等于其左右两边最大高度的最小值。为了能获取i位置左右两边的最大高度。使用动态规划。两个dp数组
leftMaxrightMax
其中
leftMax[i] 代表i位置左边的最大高度rightMax[i] 代表i位置右边的最大高度
初始状态
leftMax[0] 0;rightMax[0] 0;
填充这两个dp数组。
那么i位置最终能存的雨水量为min(eftMax[i] , rightMax[i]) - height[i]
遍历所有位置即可得到总共能接的雨水数。 代码
class Solution {public int trap(int[] height) {int n height.length;int[] leftMax new int[n];int[] rightMax new int[n];leftMax[0] height[0];for (int i 1; i n; i) {leftMax[i] Math.max(leftMax[i - 1], height[i]);}rightMax[n - 1] height[n - 1];for (int i n - 2; i 0; i--) {rightMax[i] Math.max(rightMax[i 1], height[i]);}int res 0;for (int i 0; i n; i) {res Math.min(leftMax[i], rightMax[i]) - height[i];}return res;}
}面试公司