Trapping Rain Water

来源:互联网 发布:瑜伽教学软件 编辑:程序博客网 时间:2024/06/09 22:51

当中要设定smaller,用此去不断地和比其小的值相减,就可以得到面积。

当中自己怀疑,一边会漏的情况,但事实上,我们判断选择时就选了最低的一边,而且是从两边向中间逼近的。可以放心

/**

     * @param heights: an array of integers
     * @return: a integer
     */
    public int trapRainWater(int[] heights) {
        // write your code here
        if (heights == null || heights.length < 3) {
            return 0;
        }
        int start = 0, end = heights.length - 1;
        int area = 0, smaller = 0;
        while (start < end) {
            if (heights[start] < heights[end]) {
                smaller = heights[start];
                while (start < end && heights[start] <= smaller) {
                    area = area + smaller - heights[start];
                    start++;
                }
            } else {
                smaller = heights[end];
                while (start < end && heights[end] <= smaller) {
                    area = area + smaller - heights[end];
                    end--;
                }
            }
        }
        return area;
    }
0 0
原创粉丝点击