LeetCode 42 Trapping Rain Water
来源:互联网 发布:简单的二进制算法 编辑:程序博客网 时间:2024/05/16 19:19
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!
题目链接:https://leetcode.com/problems/trapping-rain-water/
题目分析:考虑到存在高度差才会积水,所以先找最高的那个,然后分别从两边往最高的前进,并记录当前状态下的最高值,只要当前高度小于当前最高值,必然会积水,积水的面积就是高度差
public class Solution { public int trap(int[] height) { int maxHeight = 0, len = height.length, pos = 0; for(int i = 0; i < len; i ++) { if(maxHeight < height[i]) { pos = i; maxHeight = height[i]; } } int ans = 0; int curMax = 0, curArea = 0; for(int i = 0; i < pos; i ++) { if(height[i] > curMax) { curMax = height[i]; } else { curArea += curMax - height[i]; } } ans += curArea; curMax = 0; curArea = 0; for(int i = len - 1; i > pos; i --) { if(height[i] > curMax) { curMax = height[i]; } else { curArea += curMax - height[i]; } } ans += curArea; return ans; }}
0 0
- [leetcode 42] Trapping Rain Water
- leetcode || 42、 Trapping Rain Water
- [LeetCode 42]Trapping Rain Water
- LeetCode(42) Trapping Rain Water
- Leetcode 42: Trapping Rain water
- LeetCode---(42)Trapping Rain Water
- leetcode 42: Trapping Rain Water
- LeetCode-42 Trapping Rain Water
- Leetcode#42||Trapping Rain Water
- Leetcode #42 Trapping Rain Water
- leetcode 42 Trapping Rain Water
- leetcode-42 Trapping Rain Water
- leetcode 42:Trapping Rain Water
- LeetCode 42 Trapping Rain Water
- LeetCode 42 - Trapping Rain Water
- [leetcode] 42 Trapping Rain Water
- LeetCode(42)-Trapping Rain Water
- LeetCode 42 Trapping Rain Water
- Linux 下安装python软件包(pip、nose、virtualenv、distribute )
- Android性能优化之一
- A session had already been started - ignoring session_start()
- 1089. Insert or Merge (25)
- Codeforces Round #369 (Div. 2)
- LeetCode 42 Trapping Rain Water
- MySQL锁定状态查看命令
- numpy.flatten() 与 numpy.ravel()的区别
- MM 收货容差如何设定
- 大数据概述及其生态圈(一)
- Extjs组件的生命周期
- 数据库事务隔离级别
- AndroidStudio上项目和git项目互传
- Java并发编程:Timer和TimerTask(转载)