题目描述:
给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。
解题思路一:暴力法
1、使用一个变量 ans 用来记录存水量
2、然后从索引为 1 的那个柱子开始进行遍历,因为索引为 0 的柱子存不了水,分别从当前的柱子向左向右进行遍历找到左右两端的最长的柱子 记作 max_left、max_right
3、由于能存下多少水取决于最短的一根柱子,所以要在左右两个柱子中找到比较短的拿一根 ,然后减去当前位置柱子的高度就是这个位置上的存水量。然后进行依次累加.
public static int trap(int[] height) {
int ans = 0;
int size = height.length;
for (int i=1;i<size-1;i++){
//分别找到左右两边最高的柱子
int max_left = 0;
int max_right = 0;
for (int j = i;j>=0;j--){
max_left = Math.max(max_left,height[j]);
}
for (int j = i;j<size;j++){
max_right = Math.max(max_right,height[j]);
}
ans+=Math.min(max_left,max_right) - height[i];
}
return ans;
}
暂时只学会了暴力解...