给定两个整型数组,本题要求找出不是两者共有的元素。
时间: 2023-09-12 15:10:20 浏览: 77
可以使用一个哈希表记录第一个数组的所有元素,然后遍历第二个数组,判断每个元素是否在哈希表中出现过。如果出现过,则将其从哈希表中删除;如果未出现过,则将其加入结果集中。最后返回结果集即可。以下是示例代码:
```
vector<int> findDifferentElements(vector<int>& nums1, vector<int>& nums2) {
unordered_set<int> s(nums1.begin(), nums1.end()); // 将nums1中的所有元素加入哈希表
vector<int> res; // 结果集
for (int num : nums2) {
if (s.count(num)) { // 如果num在哈希表中出现过
s.erase(num); // 将其从哈希表中删除
} else { // 如果num未出现过
res.push_back(num); // 将其加入结果集
}
}
return res;
}
```
相关问题
给定两个整型数组,本题要求找出不是两者共有的元素
的个数。即两个数组中所有不相同的元素个数之和。
解题思路:
1. 遍历第一个数组,将数组中的每个元素加入到一个 set 中。
2. 遍历第二个数组,对于每个元素,判断是否在 set 中存在。如果不存在,则将其加入到 set 中。
3. 最终 set 的大小即为两个数组中所有不相同的元素个数之和。
代码实现:
```python
def find_different_elements(nums1, nums2):
s = set(nums1)
for num in nums2:
if num not in s:
s.add(num)
return len(s)
```
测试示例:
```python
>>> find_different_elements([1, 2, 3], [2, 3, 4])
3
>>> find_different_elements([1, 1, 2, 3], [2, 3, 3, 4])
3
>>> find_different_elements([], [])
0
```
用C语言完成给定两个整型数组,本题要求找出不是两者共有的元素。
可以使用两个for循环分别遍历两个数组,判断每个元素是否在另一个数组中存在,如果不存在则输出该元素即可。具体实现可以参考以下代码:
```c
#include <stdio.h>
int main()
{
int arr1[] = {1, 2, 4, 5, 7};
int arr2[] = {2, 3, 5, 6, 8};
int len1 = sizeof(arr1) / sizeof(int);
int len2 = sizeof(arr2) / sizeof(int);
for (int i = 0; i < len1; i++)
{
int flag = 0; // 标记元素是否在arr2中存在
for (int j = 0; j < len2; j++)
{
if (arr1[i] == arr2[j])
{
flag = 1;
break;
}
}
if (!flag)
{
printf("%d ", arr1[i]);
}
}
for (int i = 0; i < len2; i++)
{
int flag = 0; // 标记元素是否在arr1中存在
for (int j = 0; j < len1; j++)
{
if (arr2[i] == arr1[j])
{
flag = 1;
break;
}
}
if (!flag)
{
printf("%d ", arr2[i]);
}
}
return 0;
}
```
以上代码将输出结果为:1 4 3 6 8
阅读全文