LeetCode 42. 接雨水 双指针 每日一题

问题描述

LeetCode 42. 接雨水 双指针 每日一题_第1张图片

 

Java  双指针

class Solution {
    public int trap(int[] height) {
        int len = height.length;
        //找到最大值的下标
        int maxValue = 0;
        int maxIndex = 0;
        for(int i = 0;i < len;i++){
            if(height[i] > maxValue){
                maxValue = height[i];
                maxIndex = i;
            }
        }
        int ans = 0;
        //遍历左边
        for(int left = 0;left < maxIndex;left++){
            for(int right = left + 1;right <= maxIndex;right++){
                if(height[right] < height[left]){
                    ans += height[left] - height[right];
                }else {
                    left = right;
                }
            }
        }
        //遍历右边
        for(int right = len - 1;right > maxIndex;right--){
            for(int left = right - 1;left >= maxIndex;left--){
                if(height[left] < height[right]){
                    ans += height[right] - height[left];
                }else {
                    right = left;
                }
            }
        }
        return ans;
    }
}

 

你可能感兴趣的:(LeetCode,leetcode,算法,散列表)