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;
}
};
答案 0 :(得分:0)
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.
OR
你可以做到
vector<int> a(num1.size());
而不是
vector<int> a;
答案 1 :(得分:-1)
问题在于您通过[k]访问向量。
无法使用[k]访问a为空向量的向量。
您需要使用 a.push_back(nums [i]);
或
声明某个大小的向量,如向量a(10); 然后用[k]访问它。