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

Trapping Rain Water

时间:2015-09-08 18:16:54      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:

解析参照:http://www.xuebuyuan.com/1586534.html

开始被那个给图的骗了,以为只要下降上升就可以,而其实中间的某些局部最高点,并不能觉得整个雨水高度。

最后还是两个指针向中间遍历,每次移动较小的,而当前最大的不动。计算面积要使用当前第二高的线。

 1 class Solution {
 2 public:
 3     int Min(int a,int b)
 4     {
 5         return a>b?b:a;
 6     }11     int trap(vector<int>& height) {
12         int len = height.size();
13 
14         if(len<=2)
15            return 0;
16         int secondHeight = 0;
17         int i=0,j=len-1,area=0;20         while(i!=j)
21         {
22            if(height[j]>secondHeight && height[i]>secondHeight)
23            {
24                secondHeight = Min(height[i],height[j]);
25            }
26 
27            if(height[i]>height[j])
28            {
29                if(height[j]<secondHeight)
30                area += secondHeight - height[j];
31                j--;
32            }
33            else
34            {
35                if(height[i]<secondHeight)
36                area += secondHeight - height[i];
37                i++;
38            }
39         }
40         return area;
41     }
42 };

 

Trapping Rain Water

标签:

原文地址:http://www.cnblogs.com/ZhangYushuang/p/4792283.html

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