trapping rain water
来源:互联网 发布:淘宝网店怎样上货 编辑:程序博客网 时间:2024/06/06 07:27
题目;
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!
解答:
找到最长的那块木板,假设其下标为maxIdx。
分别从左侧和右侧向其逼近。
在左侧逼近过程中:
如果一个木板的长度小于已经遍历的最大长度max,即max>该木板<maxIdx,所以在该木板位置能存max - 该木板长度的水量(左右两侧各有一个木板长于它)。
如果一个木板的长度大于已经遍历的最大长度max,即max<该木板<maxIdx,所以在该木板位置不能存水(因为左右两侧只有一个木板(maxIdx)长于它)。更新max值。
右侧逼近过程与左侧相似。
代码:class Solution {public: int trap(int A[], int n) { int i;int maxline, max;int water = 0;maxline = 0;max = A[0];for(i = 1; i < n; i++){if(A[i] > max){max = A[i];maxline = i;}}max = A[0];for(i = 1; i < maxline; i++){if(A[i] < max){water += max - A[i];}else{max = A[i];}}max = A[n-1];for(i = n-2; i > maxline; i--){if(A[i] < max){water += max - A[i];}else{max = A[i];}}return water; }};
0 0
- LeetCode: Trapping Rain Water
- LeetCode : Trapping Rain Water
- Trapping Rain Water
- [LeetCode] Trapping Rain Water
- [Leetcode] Trapping Rain Water
- [Leetcode] Trapping Rain Water
- Trapping Rain Water
- Trapping Rain Water
- [LeetCode]Trapping Rain Water
- Trapping Rain Water
- Trapping Rain Water
- LeetCode-Trapping Rain Water
- Trapping Rain Water
- [leetcode] Trapping Rain Water
- Trapping Rain Water
- [LeetCode] Trapping rain water
- Leetcode: Trapping Rain Water
- 38 - Trapping Rain Water
- 判断一个用户输入的日期是不是闰年. Python 代码
- Cmake出现的两个问题
- typedef的用法
- 八种常用内部排序算法总结
- linux 必须要记住的command
- trapping rain water
- Hive安装笔记
- std::future and std::async 简介
- PAT 1073. Scientific Notation(20)
- 配置Vim D语言代码补全
- 题目1108:堆栈的使用 题目28
- QCamera的使用方法,包含截图并且保存图片等简单功能
- /usr/bin/ld: error: cannot find -lGL
- UVA - 10245 The Closest Pair Problem