代码:
class Solution {
public int trap(int[] height) {
int n = height.length;
int[] leftMax = new int[n];
int[] rightMax = new int[n];
int sum = 0;
leftMax[0] = height[0];
rightMax[n-1] = height[n-1];
for(int i=1;i<n;i++){
leftMax[i] = height[i]>leftMax[i-1]?height[i]:leftMax[i-1];
}
for(int i=n-2;i>=0;i--){
rightMax[i] = height[i]>rightMax[i+1]?height[i]:rightMax[i+1];
}
for(int i=0;i<n;i++){
int h = leftMax[i]<rightMax[i]?leftMax[i]:rightMax[i];
sum += h - height[i];
}
return sum;
}
}
所以说 动态规划就是保存部分结果后面再使用的思路吗 没懂- -||