42.接雨水
注:这是我自己做出来的(第一次做出来一个难题)
先把代码写上,后续补充我的题解 。
class Solution { public int getMax(int[] height){ int max = height[0]; for (int i = 0; i < height.length; i++) { if(max < height[i]){ max = height[i]; } } return max; } public int getMaxIndex(int[] height){ int maxIndex = 0; int max = getMax(height); for (int i = 0; i < height.length; i++) { if(max == height[i]){ maxIndex = i; } } return maxIndex; } public int trap(int[] height) { if(height.length == 0 || height.length == 1 || height.length == 2){ return 0; } int maxIndex = getMaxIndex(height); int max = getMax(height); int sum = 0; for (int i = 1; i < height.length-1; i++) { if(i<maxIndex){ if(height[i] < height[i-1]){ sum += height[i-1] - height[i]; height[i] = height[i] + height[i-1] - height[i]; } }else if(i>maxIndex){ for(int j=height.length-2; j>=i; j--){ if(height[j] < height[j+1]){ sum += height[j+1] - height[j]; height[j] = height[j] + height[j+1] - height[j]; } } return sum; } } return sum; } }

浙公网安备 33010602011771号