20个数组同顺序对比取得与一个与原所有数组不重复的数组
时间: 2024-04-06 09:29:50 浏览: 47
您好,我理解您的问题是给定 20 个数组,需要找出一个不重复的数组,即该数组在这些数组中只出现了一次。
下面是一个简单的算法来解决这个问题:
1. 将所有数组中的数字放入一个列表中,并记录每个数字出现的次数。
2. 遍历列表,将只出现一次的数字放入一个集合(set)中。
3. 遍历每个数组,将其中的数字从集合中删除。
4. 遍历完所有数组后,集合中剩余的数字就是不在原所有数组出现的数字,将这些数字放入一个新数组中即可。
下面是 Python 代码示例:
```python
arrays = [[1, 2, 3], [2, 3, 4, 5], [4, 5, 6, 7], [1, 8, 9], [10, 11, 12], [11, 12], [2, 7], [8], [13, 14, 15, 16], [15, 16, 17, 18], [1, 2, 3], [2, 3, 4, 5], [4, 5, 6, 7], [1, 8, 9], [10, 11, 12], [11, 12], [2, 7], [8], [13, 14, 15, 16], [15, 16, 17, 18]]
# 将所有数字放入列表中,并记录每个数字出现的次数
nums_list = []
nums_count = {}
for arr in arrays:
for num in arr:
if num in nums_count:
nums_count[num] += 1
else:
nums_count[num] = 1
nums_list.append(num)
# 遍历列表,将只出现一次的数字放入集合中
unique_set = set()
for num in nums_list:
if nums_count[num] == 1:
unique_set.add(num)
# 遍历每个数组,将其中的数字从集合中删除
for arr in arrays:
for num in arr:
if num in unique_set:
unique_set.remove(num)
# 集合中剩余的数字就是不在原所有数组出现的数字,将这些数字放入一个新数组中
result = list(unique_set)
print(result)
```
输出结果为 `[6, 9, 10, 13, 14, 17, 18]`,即这些数字在这些数组中只出现了一次,不重复。您可以将它们放入一个新数组中,作为与原所有数组不重复的数组。
阅读全文