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;
        }
    };