Line 1034: Char 9: runtime error: reference binding to null pointer of type 'int' (stl_vector.h) in leetcode IDE
Line 1034: Char 9: runtime error: reference binding to null pointer of type 'int' (stl_vector.h) in leetcode IDE
我试过一道leetcode题IDE。 运行 以下代码出现运行时错误。
由于我是初学者,无法调试错误。
class Solution
{
public:
vector<int> runningSum(vector<int>& nums) {
vector<int> result;
int n=nums.size();
for(int i=0;i<n;i++)
{
int sum=0;
for(int j=0;j<=i;j++)
{
sum=sum + nums[j];
}
result[i]=sum;
}
return result;
}
};
您的解决方案中的问题是 result[i]
不是定义的地址,因为结果向量是空的,它没有定义任何大小。
您可以使用 result.push_back(sum);
或在声明时使用 vector<int> result(n);
,但不能同时使用。
完整代码
class Solution
{
public:
vector<int> runningSum(vector<int>& nums) {
int n=nums.size();
vector<int> result(n);
for(int i=0;i<n;i++)
{
int sum=0;
for(int j=0;j<=i;j++)
{
sum=sum + nums[j];
}
result[i]=sum;
}
return result;
}
};
无关,但有一种高效且更短的方法来实现此代码。
您的代码的时间复杂度为 O(n2) 但它可以在 O(n) 中完成,如下所示:
class Solution
{
public:
vector<int> runningSum(vector<int>& nums) {
int n=nums.size();
vector<int> result(n);
result[0] = nums[0];
for(int i=1;i<n;i++)
{
result[i] = result[i-1] + nums[i];
}
return result;
}
};
我试过一道leetcode题IDE。 运行 以下代码出现运行时错误。
由于我是初学者,无法调试错误。
class Solution
{
public:
vector<int> runningSum(vector<int>& nums) {
vector<int> result;
int n=nums.size();
for(int i=0;i<n;i++)
{
int sum=0;
for(int j=0;j<=i;j++)
{
sum=sum + nums[j];
}
result[i]=sum;
}
return result;
}
};
您的解决方案中的问题是 result[i]
不是定义的地址,因为结果向量是空的,它没有定义任何大小。
您可以使用 result.push_back(sum);
或在声明时使用 vector<int> result(n);
,但不能同时使用。
完整代码
class Solution
{
public:
vector<int> runningSum(vector<int>& nums) {
int n=nums.size();
vector<int> result(n);
for(int i=0;i<n;i++)
{
int sum=0;
for(int j=0;j<=i;j++)
{
sum=sum + nums[j];
}
result[i]=sum;
}
return result;
}
};
无关,但有一种高效且更短的方法来实现此代码。 您的代码的时间复杂度为 O(n2) 但它可以在 O(n) 中完成,如下所示:
class Solution
{
public:
vector<int> runningSum(vector<int>& nums) {
int n=nums.size();
vector<int> result(n);
result[0] = nums[0];
for(int i=1;i<n;i++)
{
result[i] = result[i-1] + nums[i];
}
return result;
}
};