码迷,mamicode.com
首页 > 移动开发 > 详细

LeetCode: Trapping Rain Water 解题报告

时间:2014-10-28 19:54:55      阅读:213      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   color   os   ar   java   for   

https://oj.leetcode.com/problems/trapping-rain-water/

Trapping Rain Water
Given n non-negative integers representing an elevation map where the width of each bar is 1, compute how much water it is able to trap after raining.

For example,
Given [0,1,0,2,1,0,1,3,2,1,2,1], return 6.


The above elevation map is represented by array [0,1,0,2,1,0,1,3,2,1,2,1]. In this case, 6 units of rain water (blue section) are being trapped. Thanks Marcos for contributing this image!

SOLUTION 1:

从左到右扫描,计算到从左边到curr的最高的bar,从右到左扫描,计算到从右边到curr的最高的bar。

再扫描一次,把这两者的低者作为{桶}的高度,如果这个桶高于A[i]的bar,那么A[i]这个bar上头可以存储height - A[i]这么多水。把这所有的水加起来即可。

bubuko.com,布布扣
 1 public class Solution {
 2     public int trap(int[] A) {
 3         if (A == null) {
 4             return 0;
 5         }
 6         
 7         int max = 0;
 8         
 9         int len = A.length;
10         int[] left = new int[len];
11         int[] right = new int[len];
12         
13         // count the highest bar from the left to the current.
14         for (int i = 0; i < len; i++) {
15             left[i] = i == 0 ? A[i]: Math.max(left[i - 1], A[i]);
16         }
17         
18         // count the highest bar from right to current.
19         for (int i = len - 1; i >= 0; i--) {
20             right[i] = i == len - 1 ? A[i]: Math.max(right[i + 1], A[i]);
21         }
22         
23         // count the largest water which can contain.
24         for (int i = 0; i < len; i++) {
25             int height = Math.min(right[i], left[i]);
26             if (height > A[i]) {
27                 max += height - A[i];
28             }
29         }
30         
31         return max;
32     }
33 }
View Code

CODE:

https://github.com/yuzhangcmu/LeetCode_algorithm/blob/master/array/Trap.java

 

LeetCode: Trapping Rain Water 解题报告

标签:style   blog   http   io   color   os   ar   java   for   

原文地址:http://www.cnblogs.com/yuzhangcmu/p/4057374.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!