Trapping Rain Water
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
.
思路:
不会做,详细分析和思路参考此文。看懂了别人的,照葫芦画瓢弄了一个。
题解:
class Solution { public: int trap(int A[], int n) { int res = 0; int maxIndex = 0; for(int i=1;i<n;i++) if(A[i]>A[maxIndex]) maxIndex = i; int maxCur = A[0]; for(int i=1;i<maxIndex;i++) { if(A[i]<maxCur) res += maxCur-A[i]; else maxCur = A[i]; } maxCur = A[n-1]; for(int i=n-2;i>maxIndex;i--) { if(A[i]<maxCur) res += maxCur-A[i]; else maxCur = A[i]; } return res; } };