博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode-42 Trapping Rain Water
阅读量:5269 次
发布时间:2019-06-14

本文共 1241 字,大约阅读时间需要 4 分钟。

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!

 

Hide Tags
    
 
注意:题目给出的图片具有很大迷惑性。需要注意的是,即使是局部的最高点,在全局看来,也有可能储水。如一个case{5,2,1,2,1,5}.
解题思路:
1. 先找到全局的最高点;
2. 分别从左右两边像最高点逼近。
3. 由左边向最高点逼近时,设左边当前的最大值下标为currentMax,当前遍历到i,全局最高值下边为maxIndex;
  如果A[currentMax] > A[i]; sum += (A[currentMax] - A[i]);
  否则,currentMax = i,此条带无法储水;
4. 由右边逼近最高点类似3.
5. 算法时间复杂度为O(n)
 
代码如下:
1 public int trap(int[] height) { 2         if(height.length == 0) return 0; 3         int maxIndex = 0; 4         for(int i=0; i
height[i] ? maxIndex : i); 5 6 int sum = 0; 7 //from left to right 8 int currMax = 0; 9 for(int i=0; i
maxIndex; i--) {16 if(height[i] < height[currMax]) sum += (height[currMax] - height[i]);17 else currMax = i;18 }19 return sum;20 }

 

 

转载于:https://www.cnblogs.com/linxiong/p/4294777.html

你可能感兴趣的文章
第17章 Redis概述
查看>>
MyBatis的关联映射和动态SQL
查看>>
saxon 处理xslt
查看>>
Navicat 连接远程数据库报错:1130 - Host "XX.XX.XX.XX" is not allowed to connect to this MySQL server...
查看>>
【leetcode 简单】 第八十一题 4的幂
查看>>
Django学习网站
查看>>
ghost版win7安装
查看>>
Vue.js2.0快速入门笔记
查看>>
数据库分库分表
查看>>
java 中的字符串连接 比较
查看>>
ASIHTTPRequest类库简介和使用说明
查看>>
客户端Webview重定向
查看>>
C++反汇编第二讲,反汇编中识别虚表指针,以及指向的虚函数地址
查看>>
【转】IDEA中xml文件头报错:URI is not registered (Settings | Languages & Frameworks | Schemas and DTDs)...
查看>>
Linux 下安装 Python3
查看>>
win8(64位)下安装Memcached
查看>>
系统集成项目管理之项目质量管理
查看>>
Ffmpeg和SDL如何同步视频(转)
查看>>
【stanford C++】字符串(String)与流(Stream)
查看>>
工作学习笔记——一些关于链接的有趣小问题
查看>>