42. Trapping Rain Water

来源:互联网 发布:中国大国沙文主义 知乎 编辑:程序博客网 时间:2024/04/29 22:24

Trapping Rain Water

等雨水的凹槽容量
For example,
Given [0,1,0,2,1,0,1,3,2,1,2,1], return 6.
这里写图片描述

代码1:

//先找出中间最高的  然后再计算两边public class Solution {    public int trap(int[] height) {        if (height.length <= 2) return 0;        int max = Integer.MIN_VALUE;        int maxIndex = -1;        for (int i = 0; i < height.length; i++) {            if (height[i] > max) {                max = height[i];                maxIndex = i;            }        }        int leftMax = height[0];        int water = 0;        for (int i = 1; i < maxIndex; i++) {            if (height[i] > leftMax) {                leftMax = height[i];        } else {            water += leftMax - height[i];            }        }        int rightMax = height[height.length - 1];        for (int i = height.length - 2; i > maxIndex; i--) {            if (height[i] > rightMax) {                rightMax = height[i];        } else {            water += rightMax - height[i];            }        }        return water;    }}

代码2:

用了两个三元运算

public class Solution {    public int trap(int[] A) {        int i = 0, j = A.length - 1, result = 0, plank = 0;        while(i <= j){            plank = plank < Math.min(A[i], A[j]) ? Math.min(A[i], A[j]) : plank;            result = A[i] >= A[j] ? result + (plank - A[j--]) : result + (plank - A[i++]);        }        return result;    }}
0 0
原创粉丝点击