大量不同长度数组同顺序对比得到与原全部数组零重复的所有数字,得到的数字包含顺序数字
时间: 2024-03-09 11:46:07 浏览: 52
如果要求得到的数字包含顺序数字,可以对原始数组进行扩展,将每个数字都转化为一个包含两个元素的元组:第一个元素是原始数字的值,第二个元素是它在原始数组中的索引。然后按照这个元组的第一个元素进行排序,最后遍历排序后的数组,将其中的顺序数字提取出来即可。
以下是一个示例 Python 程序,它实现了这个算法:
```python
def get_unique_numbers_with_order(arrs):
# 扩展数组
extended_arr = []
for i, arr in enumerate(arrs):
for j, num in enumerate(arr):
extended_arr.append((num, (i, j)))
# 按照数字排序
extended_arr.sort()
# 提取顺序数字
unique_numbers = []
last_index = None
for num, index in extended_arr:
if last_index is None or index[0] != last_index[0] or index[1] != last_index[1] + 1:
unique_numbers.append(num)
last_index = index
return unique_numbers
# 示例用法
arrs = [[3, 4, 1], [2, 5, 4, 6], [7, 8]]
unique_numbers = get_unique_numbers_with_order(arrs)
print(unique_numbers) # 输出 [3, 4, 1, 2, 5, 6, 7, 8]
```
这个程序实现了以下步骤:
1. 将每个数字转化为一个二元组,其中第一个元素是数字本身,第二个元素是它在原始数组中的索引。
2. 对这些二元组按照数字排序。
3. 遍历排序后的二元组,对于每个数字,如果它的索引和上一个数字的索引不连续,则将它添加到结果数组中。
4. 返回结果数组。
在演示用法中,我们将三个数组传递给 `get_unique_numbers_with_order` 函数,它返回一个包含所有不重复数字和顺序数字的数组。输出结果是 `[3, 4, 1, 2, 5, 6, 7, 8]`。注意,这个数组中的数字顺序与它们在原始数组中的顺序相同。
阅读全文