【发布时间】:2022-01-09 14:34:05
【问题描述】:
问题:- https://leetcode.com/problems/intersection-of-two-arrays/
这是我的代码:-
class Solution {
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
vector <int> result;
for(int i=0;i<nums1.size(); i++){
for(int j=0;j<nums2.size();j++){
if(nums1[i] == nums2[j]){
result.push_back(nums1[i]);
break;
}
}
}
for(int i=0;i<result.size();i++){
for(int j=0;j<result.size();j++){
if(result[i] == result[j] and i!=j){
result.pop_back();
}
}
}
return result;
}
};
我得到了这个测试用例的错误输出:- 输入:-
nums1 = [61,24,20,58,95,53,17,32,45,85,70,20,83,62,35,89,5,95,12,86,58,77,30,64,46,13,5,92,67,40,20,38,31,18,89,85,7,30,67,34,62,35,47,98,3,41,53,26,66,40,54,44,57,46,70,60,4,63,82,42,65,59,17,98,29,72,1,96,82,66,98,6,92,31,43,81,88,60,10,55,66,82,0,79,11,81]
nums2 =[5,25,4,39,57,49,93,79,7,8,49,89,2,7,73,88,45,15,34,92,84,38,85,34,16,6,99,0,2,36,68,52,73,50,77,44,61,48]
预期输出:-
[61,45,85,89,5,77,92,38,7,34,44,57,4,6,88,0,79]
我的输出:-
[61,45,85,89,5,77,5,92,38,89,85,7,34,44,57]
请告诉我哪里错了
【问题讨论】:
-
请在不依赖外部链接的情况下提供minimal reproducible example。代码应该做什么?
-
为什么是一个类?为什么看起来像 c# 代码?
-
不管怎样,问题是这个
result.pop_back();。pop_back()弹出最后一个元素。你应该使用erase()之类的东西。参考-cplusplus.com/reference/vector/vector/erase -
@AbdurRakib 因为这就是在 leetcode 上制定解决方案的方式?
-
此外,请注意您的算法效率不高:O(n^2)。例如,您可以先对两个数组进行排序。或使用
std::set。使用std::set_intersection 也可能有用。