题目介绍:
给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。
示例:
输入: [0,1,0,2,1,0,1,3,2,1,2,1]
输出: 6
我的解题:
小白菜一个显然不会这么困难的题,暴力求的有点脑壳疼,解题是借鉴大神操作,使用双指针大法
通过if(maxa<maxb)判断应该加左边还是加右边,以小的为准
class Solution {
public:
int trap(vector<int>& height) {
if(height.size()<3)
return 0;
int length=height.size();
int a=0,b=height.size()-1;
int maxa=height[0],maxb=height[length-1];
int sum=0;
while(a<=b){
maxa=max(height[a],maxa);
maxb=max(height[b],maxb);
if(maxa<maxb){
sum+=maxa-height[a];
a++;
}
else{
sum+=maxb-height[b];
b--;
}
}
return sum;
}
};
执行结果: