…и я решил пересмотреть алгоритм и написать об этом

У меня был первый очень неловкий момент технического собеседования, и я подумал, что это будет отличная возможность просмотреть алгоритм и освежить свой блог.

Я проходил собеседование на удаленную работу (Python и AngularJS), и технический директор хотел, чтобы я провел собеседование с каждым членом команды (небольшая команда, около 5 разработчиков). Первые 3 собеседования прошли нормально, и испытание кода тоже было в порядке. К сожалению, последнее интервью, не так много. Я могу винить в этом такие вещи, как разочаровывающая обстановка (два интервьюера и программирование через совместное использование экрана), тот факт, что я привык писать алгоритмы на JavaScript, а интервьюер настаивал на том, чтобы я писал на Python, который я не писал в несколько хороших недель, тот факт, что в тот день у меня была презентация проекта и многое другое.

Но правда в том, что я просто заржавел! Поэтому я воспользовался этим как возможностью освежить свои алгоритмы и навыки логического мышления.

Вот вызов, который мне дали. (Я должен прибить это в следующий раз).

Для двух отсортированных списков (массивов) объедините их в один отсортированный список.

Вот некоторые вещи, которые следует учитывать:

  • Возможность списков разной длины.
  • Возможность списков из 1 элемента
  • Создайте новый массив для отправки
  • Имеют 2 переменные и увеличиваются только при нажатии элемента
#This implementation thanks to Max Shawabkeh at stackoverflow
def merge(l, m):
    result = []
    i = j = 0
    total = len(l) + len(m)
    while len(result) != total:
        if len(l) == i:
            result += m[j:]
            break
        elif len(m) == j:
            result += l[i:]
            break
        elif l[i] < m[j]:
            result.append(l[i])
            i += 1
        else:
            result.append(m[j])
            j += 1
    return result

>>> merge([1,2,6,7], [1,3,5,9])
[1, 1, 2, 3, 5, 6, 7, 9]

Я изучаю возможность сделать это с помощью генераторов Python. Насколько я понимаю, генератор — это форма итератора, и я надеюсь написать реализацию с их использованием.

Так или иначе, это был мой способ подняться после постыдного интервью. Надеюсь, что следующий будет намного лучше. Я проведу некоторое время на codewars.com, чтобы освежиться.

Всем удачного кодинга!

Мое портфолио находится на leibelhecht.com, и я хотел бы поговорить о возможности присоединиться к вашей команде.