LeetCode42. Trapping Rain Water
来源:互联网 发布:ubuntu 14.04 iso 32 编辑:程序博客网 时间:2024/06/18 04:59
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.
时间复杂度(O(n))
空间复杂度(O(1))
#include<vector>#include<iostream>using namespace std;class Solution {public: int trap(vector<int>& height) { int n=height.size(); if(n<2) return 0; int left=0,right=n-1,res=0,minh=0; while(left<right){ minh=min(height[left],height[right]); if(minh==height[left]){ while((++left<right)&&(height[left]<minh)){ res=res+minh-height[left]; } }else{ while((--right>left)&&(height[right]<minh)){ res=res+minh-height[right]; } } } return res; }};void main(){ int a[]={0,1,0,2,1,0,1,3,2,1,2,1},n=12; vector<int> height; height.reserve(n); height.assign(&a[0],&a[n]); Solution So; int res=So.trap(height); cout<<res<<endl;}
#include<vector>#include<iostream>using namespace std;class Solution {public: int trap(vector<int>& height) { int n=height.size(); if(n<2) return 0; int left=0,right=n-1,res=0,i=0,j=0,s=0,d=0; while(left<right){ while((left<n-1)&&(height[left]<height[left+1])){ ++left; } while((right>0)&&(height[right]<height[right-1])){ --right; } if(height[left]<height[right]){ i=left+1; s=0; while((i<right)&&(height[left]>height[i])){ s=s+height[i]; ++i; } d=i-left-1; if(d>0){ res=res+height[left]*d-s; } left=i; }else{ j=right-1; s=0; while((j>left)&&(height[right]>height[j])){ s=s+height[j]; --j; } d=right-j-1; if(d>0){ res=res+height[right]*d-s; } right=j; } } return res; }};void main(){ int a[]={0,1,0,2,1,0,1,3,2,1,2,1},n=12; vector<int> height; height.reserve(n); height.assign(&a[0],&a[n]); Solution So; int res=So.trap(height); cout<<res<<endl;}
0 0
- [LeetCode42]Trapping Rain Water
- LeetCode42:Trapping Rain Water
- Leetcode42 Trapping Rain Water
- LeetCode42. Trapping Rain Water
- leetcode42 Trapping Rain Water
- leetcode42~Trapping Rain Water
- leetcode42. Trapping Rain Water
- LeetCode42. Trapping Rain Water
- Leetcode42. Trapping Rain Water
- LeetCode42. Trapping Rain Water
- LeetCode42——Trapping Rain Water
- LeetCode42/11 Trapping Rain Water/Container With Most Water/Hist area**
- LeetCode: Trapping Rain Water
- LeetCode : Trapping Rain Water
- Trapping Rain Water
- [LeetCode] Trapping Rain Water
- [Leetcode] Trapping Rain Water
- [Leetcode] Trapping Rain Water
- Qt学习之路-贪吃蛇
- app与后台通信完整流程
- ConstraintLayout使用心得
- MQ4语言中dll的引用方法
- NginX高性能服务器模型
- LeetCode42. Trapping Rain Water
- LightOJ
- 高阶篇:4.3.5)DFMEA建议措施及后续完备
- uva 333 Recognizing Good ISBNs
- bridged、host-only和NAT的虚拟机用法
- 通过串口,根据参数名称请求mavlink参数值
- Linux系统下安装JDK和Tomcat
- 学习淘淘商城第三十二课(Redis集群测试)
- NFS服务器设置及mount命令挂载