第 1034 行:字符 9:运行时错误:引用绑定到 'int' (stl_vector.h) 类型的空指针?如何解决>?


int trap(vector<int>& height) {

int n=height.size();
vector<int> left;
vector<int> right;

left[0]=height[0];

for(int i=0;i<n;i++)
{
left[i]=max(left[i-1],height[i]);
}

right[n-1]=height[n-1];
for(int i=n-2;i>=0;i--)
{
right[i]=max(right[i+1],height[i]);
}

int ans=0;

for(int i=0;i<n;i++)
{
ans+=min(left[i],right[i])-height[i];
}
return ans;
}
};

我做这个代码是为了解决雨水问题,但它显示了上面的错误idk如何解决,我被这个卡住了

使用

vector<int> left;
vector<int> right;

创建两个向量。对它们的任何索引都将超出的范围,并导致未定义的行为。要么设置它们的大小:

vector<int> left(n);
vector<int> right(n);

或者使用push_back动态添加值。

还要注意,当i == 0时,left[i-1]也会导致UB(未定义的行为(。这发生在循环的第一次迭代中。您可能应该用int i = 1开始这个循环。

相关内容

最新更新