leetcode-42 Trapping Rain Water
2015-10-09 20:33
453 查看
问题描述:
Given n non-negative integers representing anelevation map where the width of each bar is 1, compute how much water it isable to trap after raining.
For example,
Given
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!
问题分析:
同样也是双指针法解决问题,类似的问题有:《leetcode-11 Container With Most Water》
找到左右边界,然后逐步向里逼近;时间复杂度O(n)
代码:
Given n non-negative integers representing anelevation map where the width of each bar is 1, compute how much water it isable 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!
问题分析:
同样也是双指针法解决问题,类似的问题有:《leetcode-11 Container With Most Water》
找到左右边界,然后逐步向里逼近;时间复杂度O(n)
代码:
public class Solution { public int trap(int[] A) { // 双指针法,记录左右指针位置 int left = 0, right = A.length - 1; int result = 0; // 记录左右边界的最高高度 int maxLeft = 0, maxRight = 0; while (left <= right) { // 由于水桶效应,故与left,right较小值相关 if (maxLeft <= maxRight) { if (A[left] > maxLeft) maxLeft = A[left]; else result += (maxLeft -A[left]); left++; } else { if (A[right] > maxRight) maxRight = A[right]; else result += (maxRight -A[right]); right--; } } return result; } }
相关文章推荐
- ios制作.a静态库
- 【Objective-C学习笔记】变量和基本的数据类型
- 如何使用Android Studio把自己的Android library分享到jCenter和Maven Central
- iOS导航栏,标签视图的透明度处理
- Android中创建AIDL服务的步骤
- iOS_触摸事件与手势识别
- android studio的一些编译错误
- Android RecyclerView
- GitHub 上大概600个开源 iOS 项目的分类和介绍,对于你挑选和使用开源项目应该有帮助
- nios ii avalon结构中的按键中断如何配置!
- swift版的GCD封装
- Android 应用程序的优先级和进程状态
- 我的Android进阶之旅------>修改Android签名证书keystore的密码、别名alias以及别名密码
- android时间日期选择器,监听
- iOS大典之Core Data
- Android MediaRecorder 小结
- android 创建一个新的每次project什么时候 请问自己主动 参加 V7依赖?
- 【iOS】本地推送和模拟远程推送
- 【转载】cocos2d-x2.2.3和android的平台环境
- Android的图片压缩类ThumbnailUtils,供源码研究