Мне было интересно, смогу ли я помочь. Я хочу найти алгоритм THETA (n) или линейное время для определения того, добавляются ли 2 числа в 2 отсортированных массивах до определенного числа.Два сортированных массива, сумма из 2 элементов равных определенному числу
Например, предположим, что мы имеем 2 упорядоченные массивы: X и Y
Я хочу, чтобы определить, есть ли элемент X и элемент Y, которые складываются в точно определенное количество, скажем, 50.
Я до сих пор мог придумать эти алгоритмы на Python, но я уверен, что они являются порядком THETA (n^2), а не THETA (n).
def arrayTestOne(X,Y):
S =[1 for x in X for y in Y if x+y == 50]
def arrayTestTwo(X,Y):
for x in X:
for y in Y:
if x + y == 50:
print("1")
Я думаю, что это двойник для петель, которые нарушают линейное время, но как бы вы еще перебирать 2 списков? Любые мысли были бы оценены.
Позвольте мне предложить вам больше времени подумать об этом. Скажем, что массивы [1,2, ..., 10] и [10,20, ..., 100]. Попробуйте свой алгоритм вручную и посмотрите, сможете ли вы определить, где вы тратите время. – Dave