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;
    }
}

 

posted @ 2021-04-08 19:11  吃心王  阅读(60)  评论(0)    收藏  举报