Leetcode Trapping Rain Water
来源:互联网 发布:知画生孩子视频完整 编辑:程序博客网 时间:2024/05/16 01:57
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!
Difficulty: Hard
Solution: find the peak between the left and the right, which height[i] is larger than min(height[left], height[right]).
public class Solution { public int helper(int[] height, int left, int right){ int ans = 0; if(right - left <= 1) return 0; int min = Math.min(height[left], height[right]); for(int i = left + 1; i < right; i++){ if(min - height[i] > 0) ans += min - height[i]; } return ans; } public int trap(int[] height) { int ans = 0; int len = height.length; if(len <= 2) return 0; int left = 0, right = len - 1; while(left < len){ if(left < len - 1 && height[left + 1] < height[left]) break; left++; } while(right >= 0){ if(right > 0 && height[right - 1] < height[right]) break; right--; } if(right - left <= 1) return 0; while(right - left > 1 ){ if(height[left] > height[right]){ int i = right - 1; while(i > left){ if(height[i] >= height[right]){ ans += helper(height, i, right); right = i; break; } i--; } if(i == left){ ans += helper(height, left, right); } right = i; } else{ int i = left + 1; while(i < right){ if(height[i] >= height[left]){ ans += helper(height, left, i); left = i; break; } i++; } if(right == i){ ans += helper(height, left, right); } left = i; } } return ans; }}
0 0
- LeetCode: Trapping Rain Water
- LeetCode : Trapping Rain Water
- [LeetCode] Trapping Rain Water
- [Leetcode] Trapping Rain Water
- [Leetcode] Trapping Rain Water
- [LeetCode]Trapping Rain Water
- LeetCode-Trapping Rain Water
- [leetcode] Trapping Rain Water
- [LeetCode] Trapping rain water
- Leetcode: Trapping Rain Water
- Leetcode:Trapping Rain Water
- [LeetCode] Trapping Rain Water
- <Leetcode>Trapping Rain Water
- Leetcode Trapping Rain Water
- leetcode Trapping Rain Water
- leetcode Trapping Rain Water
- LeetCode Trapping Rain Water
- LeetCode | Trapping Rain Water
- jdbc连接mysq之serverTimezone设定
- Leetcode 211. Add and Search Word - Data structure design
- ie video play Error: Unexpected call to method or property access
- C++命名空间
- Oracle-PL/SQL基础
- Leetcode Trapping Rain Water
- 解析xml内容-Reply节点的属性【华为】
- 关于token验证的了解
- Foundation中的可变字符串对象
- 'VB.net 自定义事件使用方法
- linux下实现单例模式
- Linux Suspend过程
- Oracle11g Data Guard配置手册
- seasLog学习笔记