Решение задачи Слияние списков с Яндекс Контест

Без пояснения   Просмотров: 2449


Даны два списка A и B упорядоченных по неубыванию.Объедините их в один упорядоченный список С (то есть он должен содержать len(A)+len(B) элементов). Решение оформите в виде функции merge(A, B), возвращающей новый список. Алгоритм должен иметь сложность O(len(A)+len(B)). Модифицировать исходные списки запрещается.Использовать функцию sorted и метод sort запрещается.


Код

def merge(a, b):
    s = []
    idx1, idx2 = 0, 0
    while idx1 < len(a) and idx2 < len(b):
        if a[idx1] > b[idx2]:
            s.append(b[idx2])
            idx2 += 1
        else:
            s.append(a[idx1])
            idx1 += 1
    s += a[idx1:] + b[idx2:]
    for i in s:
        print(i, end=" ")
a = list(map(int, input().split()))
b = list(map(int, input().split()))
merge(a, b)

         

Администратор Photo Автор: Администратор



Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться



Заявка на расчет