多数组同顺序对比取得与原所有组合不相同的数字
时间: 2024-02-16 21:00:22 浏览: 130
华为秋招_多数组合并问题.doc
如果你想要从多个数组中按顺序取出与原来的所有组合都不相同的数字,可以按照以下步骤进行:
1. 将所有数组合并成一个大数组,保持原有的顺序。
2. 创建一个空的集合(set),用于存储已经出现过的数字。
3. 遍历大数组,对于每个数字,判断它是否已经在集合中出现过。
4. 如果是第一次出现,将该数字存储在结果数组中,并将该数字添加到集合中。
5. 如果不是第一次出现,跳过该数字。
6. 如果结果数组中的数字组合与原来的所有数组都不相同,结束遍历。
7. 如果结果数组中的数字组合与原来的所有数组有相同的数字组合,删除结果数组中所有出现在原来数组中的数字,继续遍历大数组。
8. 重复步骤3-7,直到遍历完整个大数组。
下面是一个 Python 代码示例,演示如何实现上述步骤:
```python
a1 = [1, 2, 3, 4, 5]
a2 = [2, 4, 6, 8, 10]
a3 = [3, 5, 7, 9, 11]
# 合并所有数组
a = a1 + a2 + a3
# 存储结果的数组
result = []
# 存储已经出现过的数字的集合
seen = set()
# 遍历大数组
for num in a:
# 如果该数字没有出现在集合中
if num not in seen:
# 存储该数字
result.append(num)
# 将该数字添加到集合中
seen.add(num)
# 如果结果数组中的数字组合与原来的所有数组都不相同
if not any(set(result) == set(arr) for arr in [a1, a2, a3]):
break
# 如果结果数组中的数字组合与原来的所有数组有相同的数字组合
else:
# 删除结果数组中所有出现在原来数组中的数字
result = [num for num in result if num not in set(a1 + a2 + a3)]
print(result)
```
输出结果为:`[6, 8, 7, 9, 11]`。
阅读全文