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

Trapping Rain Water

时间:2015-07-09 00:38:11      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:

Question:

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 class Solution {
 2 public:
 3     int trap(vector<int>& height) {
 4     int n=height.size();
 5     int sum=0;
 6     int *max_left=new int[n];
 7     int *max_right=new int[n];
 8     max_left[0]=0;
 9     max_right[n-1]=0;
10     for(int i=1;i<n-1;i++)
11     {
12         max_left[i]=max(max_left[i-1],height[i-1]);
13         max_right[n-1-i]=max(max_right[n-i],height[n-i]);
14     }
15     for(int j=1;j<n-1;j++)
16     {        
17         int val=min(max_left[j],max_right[j]);
18         if(val>height[j])
19             sum+=val-height[j];
20     }
21     return sum;   
22     }
23 };

技术分享

Trapping Rain Water

标签:

原文地址:http://www.cnblogs.com/riden/p/4631557.html

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