Vid*_*dak 6 python arrays performance numpy
我需要连接数组,但如果它们重叠,还需要将A的结尾与B的开头合并。
[1, 2, 4] + [2, 4, 5] -> [1, 2, 4, 5]
[1, 2, 4] + [2, 5, 4] -> [1, 2, 4, 2, 5, 4]
[1, 2, 4] + [1, 2, 4, 5] -> [1, 2, 4, 5]
Run Code Online (Sandbox Code Playgroud)
注意:必须保留元素的顺序,[4,5]与[5,4]不同。
注2:也可以这样理解问题:我们需要A的最短扩展,以便输出以B结尾。
当然,我可以遍历第二个数组并逐个元素进行比较,但是我正在寻找一个不错的Numpy解决方案。
我有一个O(n)
解决方案,尽管没有 Numpy:
def merge(a, b):
n_a = len(a)
n = min(n_a, len(b))
m = 0
for i in range(1, n + 1):
if b[n - i] == a[n_a - 1 - m]:
m += 1
else:
m = 0
return a + b[m:]
Run Code Online (Sandbox Code Playgroud)