📅  最后修改于: 2023-12-03 14:59:49.846000             🧑  作者: Mango
通常情况下,在C++中找出两个数组中的相等元素,需要遍历两个数组来比较每个元素。在本文中,我们将介绍两种方法来解决这个问题。
第一种方法是使用嵌套循环来比较两个数组中的每个元素。假设我们有两个数组A和B,它们的大小分别为n
和m
。下面是示例代码:
int A[] = {1, 2, 3, 4, 5};
int B[] = {3, 4, 5, 6, 7};
int n = sizeof(A) / sizeof(A[0]);
int m = sizeof(B) / sizeof(B[0]);
for (int i = 0; i < n; i++) { // 遍历数组A
for (int j = 0; j < m; j++) { // 遍历数组B
if (A[i] == B[j]) { // 如果相等,则输出这个元素
cout << A[i] << endl;
}
}
}
第二种方法使用哈希表来解决这个问题。哈希表是一种数据结构,它能快速地查找一个元素是否存在。在C++中,我们可以使用unordered_set
来实现哈希表。下面是示例代码:
int A[] = {1, 2, 3, 4, 5};
int B[] = {3, 4, 5, 6, 7};
int n = sizeof(A) / sizeof(A[0]);
int m = sizeof(B) / sizeof(B[0]);
unordered_set<int> setA(A, A + n); // 将数组A转换成哈希表
for (int j = 0; j < m; j++) { // 遍历数组B
if (setA.find(B[j]) != setA.end()) { // 如果值在哈希表中,则输出这个元素
cout << B[j] << endl;
}
}
我们已经介绍了两种在C++中查找两个数组中相等元素的方法,分别是使用嵌套循环和使用哈希表。使用哈希表的方法比使用嵌套循环的方法更快,但是占用的空间也更大。根据实际情况,可以选择最适合自己的方法。