1.暴力法(果然超时了233)
class Solution {
int count=0;
public:
int trap(vector<int>& height) {
if (height.size()==0) return 0;
int Max= *max_element(height.begin(),height.end());
for(int i=0;i<Max;i++)
{
int pos=-1;
for(int j=0;j<height.size();j++)
{
if(height[j]-i>0)
{
if(pos!=-1&&j-pos>1)
{count+=j-pos-1;}
pos=j;
}
}
}
return count;
}
};
2.双指针法
class Solution {
int count=0;//总体积
public:
int trap(vector<int>& height) {
int i=0;
int j=height.size()-1;
int high=1;//高度
int sum=accumulate(height.begin(),height.end(),0); //块个数
while(i<=j)
{
while(i<=j&&height[i]<high)
i++;
while(i<=j&&height[j]<high)
j--;
count+=j-i+1;
high++;
}
return count-sum;
}
};