我的思路是把遍历每一行,有墙为1,没有为0。计算每一行两个1之间的0的个数,最后加起来。
这是我的解答。
class Solution {
public:
int trap(vector<int>& height) {
int n = height.size();
if(n==1)
{
return 0;
}
int max = 0;
for(int i =0;i<n;i++)
{
if(height[i]>max)
{
max=height[i];
}
}
if(max==0){
return 0;
}
int matrix[max][n];
for(int i =0;i<max;i++)
{
for(int j =0;j<n;j++){
if(height[j]>=1)
{
matrix[i][j]=1;
height[j]--;
}else{
matrix[i][j]=0;
}
}
}
int ans=0;
int temp[n];
for(int i=0;i<max;i++)
{
int len=0;
for(int j=0;j<n;j++)
{
if(matrix[i][j]==1)
{
temp[len++]=j;
}
}
for(int p=0;p<len-1;p++)
{
ans+=temp[p+1]-temp[p]-1;
}
}
return ans;
}
};
报了一个这样的错误。
是内存不够用吗?