为什么这段代码给出运行时错误

why does this code gives runtime error?

本文关键字:运行时错误 代码 段代码 为什么      更新时间:2023-10-16
class Solution {
public:
    vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
        sort(nums1.begin(),nums1.end());
        sort(nums2.begin(),nums2.end());
        vector<int> a;
        int i=0,j=0,k=0;
        while(i<nums1.size()&&j<nums2.size())
        {
            if(nums1[i]>nums2[j])
            {
                j++;
            }
            else if(nums1[i]<nums2[j])
            {
                i++;
            }
            else
            {
                if(a.empty() || a.back() != nums1[i])
                {
                    a[k]=nums1[i];
                }
                i++;
                j++;
                k++;
            }
        }
        return a;
    }
};

a被声明为空向量,因此除非a中有任何元素,否则不能访问a的元素。你想要

  a.push_back(nums[i]);
不是

  a[k] = nums1[i]; //a is declared as empty vector so you have to push elements to it.

你可以做

vector<int> a(num1.size());
不是

vector<int> a;

问题是你通过a[k]访问vector。

向量a是空向量,不能用a[k]访问。

需要使用 a.push_back (num[我]);

声明向量a(10);然后用[k]访问