给定两个数组 nums1 和 nums2 ,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。写出该题c++代码
时间: 2024-02-27 08:53:46 浏览: 97
以下是使用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的长度。
相关问题
/** 给定两个数组 nums1 和 nums2 ,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。示例1:输入:nums1 = [1,2,2,1], nums2 = [2,2] 输出:[2] 示例2:输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4] 输出:[9,4] 解释:[4,9] 也是可通过的 **/
这个问题是关于数组求交集的,可以使用哈希表来实现。先遍历其中一个数组,将其中的元素添加到哈希表中。然后再遍历另一个数组,如果哈希表中存在相同的元素,则加入结果集合中。Java代码实现如下:
```java
public int[] intersection(int[] nums1, int[] nums2) {
Set<Integer> set = new HashSet<>();
Set<Integer> intersect = new HashSet<>();
for (int num : nums1) {
set.add(num);
}
for (int num : nums2) {
if (set.contains(num)) {
intersect.add(num);
}
}
int[] result = new int[intersect.size()];
int index = 0;
for (int num : intersect) {
result[index++] = num;
}
return result;
}
```
使用kotlin完成这个题目:349. 两个数组的交集 给定两个数组 nums1 和 nums2 ,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。 示例 1: 输入:nums1 = [1,2,2,1], nums2 = [2,2] 输出:[2] 示例 2: 输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4] 输出:[9,4] 解释:[4,9] 也是可通过的 提示: 1 <= nums1.length, nums2.length <= 1000 0 <= nums1[i], nums2[i] <= 1000
以下是使用 Kotlin 实现求两个数组的交集的代码:
```kotlin
fun intersection(nums1: IntArray, nums2: IntArray): IntArray {
val set1 = nums1.toSet()
val set2 = nums2.toSet()
return (set1 intersect set2).toIntArray()
}
```
这段代码中,我们首先将 `nums1` 和 `nums2` 转换为 `Set` 集合,然后使用 `intersect` 函数求两个集合的交集。最后,将交集转换为数组并返回即可。
这样,我们就完成了求两个数组的交集的实现。在上述示例中,我们可以调用 `intersection(intArrayOf(1, 2, 2, 1), intArrayOf(2, 2))`,得到 `[2]`。再调用 `intersection(intArrayOf(4, 9, 5), intArrayOf(9, 4, 9, 8, 4))`,得到 `[9, 4]`。
阅读全文