采用程序实现获取n个同为递增数组的交集,如果没有,则返回-1
时间: 2024-05-06 13:20:25 浏览: 91
以下是Python实现:
```python
def intersect(arrays):
"""
获取n个同为递增数组的交集
:param arrays: 待求交集的数组,要求为同为递增数组
:return: 交集数组,如果没有则返回-1
"""
n = len(arrays)
if n == 0:
return -1
if n == 1:
return arrays[0]
result = []
i = [0] * n
while True:
min_val = min(arrays[j][i[j]] for j in range(n))
max_val = max(arrays[j][i[j]] for j in range(n))
if min_val == max_val:
result.append(min_val)
for j in range(n):
i[j] += 1
if i[j] == len(arrays[j]):
return result
else:
for j in range(n):
if arrays[j][i[j]] == min_val:
i[j] += 1
if i[j] == len(arrays[j]):
return result
break
return result
```
该函数接受一个数组`arrays`,其中每个元素都是一个递增数组。函数通过比较数组中最小值和最大值,确定当前交集中是否存在该值,如果存在,则将其添加到结果数组中,并将指针向后移动;否则,将最小值所在的数组的指针向后移动。
当某个数组的指针到达末尾时,说明交集已经找完,直接返回结果数组。如果数组为空,则返回-1。
阅读全文