Мне нужно разработать алгоритм, который сравнивает два отсортированных списка одинаковой длины и возвращает количество общих значений между ними.
Так что, если у меня есть два списка a = [2, 9, 15, 27, 36, 40] и b = [9, 11, 15, 23, 36, 44], алгоритм должен вернуть значение 3 как 9, 15 и 36 присутствуют в обоих списках.
Я знаю, что с использованием множеств может быть проще, но, поскольку я пытаюсь изучить структуры данных и алгоритмы, я бы предпочел делать это дольше (сложнее).
В моем текущем коде используется любой алгоритм слияния массивов, который на данный момент не работает, так как я все еще не уверен относительно r1 и r2, хотя я думаю, что они были бы наиболее правым элементом в массиве, но я не знаю, как получить это. например. r1 = 40 (из списка a) и r2 = 44 (из списка b)?
global a
a = [2, 9, 15, 27, 36, 40]
global b
b = [9, 11, 15, 23, 36, 44]
global c
c = []
def merge (a1, a, r1, a2, b, r2, c, list3):
i = a
j = b
k = c
r1 =
r2 =
while i <= r1 and j <= r2:
if a1[i]<=a2[j]:
a3[k] = a1[i]
i += 1
elif a3[k] >= a2[j]:
j += 1
k += 1
while i <= r1:
a3[k] = a1[i]
i += 1
k += 1
while j <= r2:
a3[k] = a2[j]
j += 1
k += 1
Спасибо за помощь и отзывы.