算法

接雨水问题

2020-11-21  本文已影响0人  小鱼嘻嘻

问题1

盛水最多的容器

原理

代码

class Solution {
    public int maxArea(int[] arr) {
      if(arr==null||arr.length<=0){
            return 0;
        }
        int max = Integer.MIN_VALUE;
        int low = 0;
        int high = arr.length-1;

        while(low<high){
            int cur = Math.min(arr[low],arr[high]);
            max = Math.max(max,cur*(high-low));
            if(arr[low]<arr[high]){
                low++;
            }else{
                high--;
            }
        }
        return max;
    }
}

注意事项

问题2

接雨水的总和最大

原理

代码

class Solution {
    public int trap(int[] arr) {
        if(arr==null||arr.length<=0){
            return 0;
        }
        int max = 0;
        int low = 0;
        int high = arr.length-1;

        int leftmax = arr[0];
        int rightmax = arr[arr.length-1];

        while(low<high){
            leftmax = Math.max(leftmax,arr[low]);
            rightmax = Math.max(rightmax,arr[high]);

            if(arr[low]<arr[high]){
                max += Math.min(leftmax,rightmax)-arr[low];
                low++;
            }else{
                max += Math.min(leftmax,rightmax)-arr[high];
                high--;
            }
        }
        return max;
    }
}

注意事项

问题3

柱状图中最大的矩形

原理

代码


注意事项

上一篇下一篇

猜你喜欢

热点阅读