给定两个数组 nums1 和 nums2 ,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。写出该题c++代码
时间: 2024-02-27 09:53:46 浏览: 102
基于C++实现两个有序链表序列的交集【100012664】
5星 · 资源好评率100%
以下是使用C++的STL库函数实现求两个数组交集的代码:
```c++
#include <vector>
#include <unordered_set>
using namespace std;
class Solution {
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
unordered_set<int> s(nums1.begin(), nums1.end());
vector<int> res;
for (int num : nums2) {
if (s.erase(num)) {
res.push_back(num);
}
}
return res;
}
};
```
在上面的代码中,我们使用了STL库函数unordered_set来存储数组nums1中的元素,然后遍历数组nums2,通过调用unordered_set的erase方法来判断nums2中的元素是否出现在nums1中。如果出现,则将该元素加入结果数组res中。最后返回结果数组即可。由于unordered_set是使用哈希表实现的,所以查找元素的时间复杂度是O(1),因此该算法的时间复杂度是O(m+n),其中m和n分别是数组nums1和nums2的长度。
阅读全文