练习7-4 找出不是两个数组共有的元素
时间: 2023-05-31 15:19:13 浏览: 268
### 回答1:
可以使用集合操作来实现。先将两个数组转换为集合,然后使用差集运算(A - B)获取第一个数组中不存在于第二个数组中的元素,再使用差集运算(B - A)获取第二个数组中不存在于第一个数组中的元素。最后将这两个结果集合合并即可。
Python 代码如下:
```python
a = [1,2,3,4]
b = [3,4,5,6]
c = set(a) - set(b) | set(b) - set(a)
print(c)
```
运行结果:
```
{1, 2, 5, 6}
```
### 回答2:
题目描述
有两个整数数组arr1和arr2,请编写一个函数找出不是两个数组共有的元素,并以新数组的形式返回。
示例
输入:[4,3,2,1], [7,8,9,4]
输出:[3,2,1,7,8,9]
解析:在arr1中除了4以外的元素为[3,2,1],在arr2中除了4以外的元素为[7,8,9],将它们合并起来即为[3,2,1,7,8,9]
思路分析
可以先将两个数组合并为一个新的数组,然后找到不是两个数组共有的元素。
方法一:使用set(集合)去重
将两个数组合并为一个新的数组arr,然后使用set去重得到一个新的数组setArr。为了统计元素出现的次数,可以从arr中遍历元素,使用dictionary(字典)记录每个元素出现的次数。最后遍历setArr数组,将字典中出现次数为1的元素添加到结果数组中。
方法二:使用双指针
将两个数组排序,然后使用两个指针分别指向两个数组中的元素。如果两个指针所指的元素不相等,则将较小的元素添加到结果数组中,并将指向该元素的指针向后移动一位。如果两个指针所指的元素相等,则将两个指针同时向后移动一位。最终得到的结果数组即为不是两个数组共有的元素。
代码演示
方法一:使用set(集合)去重的代码实现如下:
### 回答3:
练习7-4 要求我们找出两个数组中不共有的元素。问题实际上可以转化为求两个数组的差集。也就是说,我们需要找到那些只出现在一个数组中的元素。
要完成这个任务,我们可以使用循环和条件语句来依次遍历两个数组中的元素,判断它们是否在另一个数组中出现过。如果在,就跳过该元素;如果不在,就将该元素加入到结果列表中。
具体的做法可以是这样的:
1. 定义两个数组,以及一个空的结果列表。
2. 遍历第一个数组中的所有元素:
a. 对于当前的元素,检查它是否在第二个数组中出现过。
b. 如果没有出现过,就将它加入到结果列表中。
c. 如果出现过,就跳过该元素。
3. 重复步骤2,但这次遍历的是第二个数组中的所有元素。
4. 返回结果列表。
下面是一个示例代码,它实现了上述的算法:
```
def diffArrays(arr1, arr2):
# 定义结果列表
result = []
# 遍历第一个数组中的元素
for elem in arr1:
# 如果该元素在第二个数组中没有出现过
if elem not in arr2:
# 将它加入到结果列表中
result.append(elem)
# 遍历第二个数组中的元素
for elem in arr2:
# 如果该元素在第一个数组中没有出现过
if elem not in arr1:
# 将它加入到结果列表中
result.append(elem)
# 返回结果列表
return result
```
这个函数接受两个数组作为参数,返回它们的差集。我们可以将它应用到题目中给出的示例,例如:
```
arr1 = [1, 2, 3, 4, 5]
arr2 = [3, 4, 5, 6, 7]
result = diffArrays(arr1, arr2)
print(result)
# 输出: [1, 2, 6, 7]
```
以上就是我对于练习7-4的解答。通过这个练习,我们不仅复习了Python中的循环和条件语句,还学习了如何求两个数组的差集。
阅读全文