…и я решил пересмотреть алгоритм и написать об этом
У меня был первый очень неловкий момент технического собеседования, и я подумал, что это будет отличная возможность просмотреть алгоритм и освежить свой блог.
Я проходил собеседование на удаленную работу (Python и AngularJS), и технический директор хотел, чтобы я провел собеседование с каждым членом команды (небольшая команда, около 5 разработчиков). Первые 3 собеседования прошли нормально, и испытание кода тоже было в порядке. К сожалению, последнее интервью, не так много. Я могу винить в этом такие вещи, как разочаровывающая обстановка (два интервьюера и программирование через совместное использование экрана), тот факт, что я привык писать алгоритмы на JavaScript, а интервьюер настаивал на том, чтобы я писал на Python, который я не писал в несколько хороших недель, тот факт, что в тот день у меня была презентация проекта и многое другое.
Но правда в том, что я просто заржавел! Поэтому я воспользовался этим как возможностью освежить свои алгоритмы и навыки логического мышления.
Вот вызов, который мне дали. (Я должен прибить это в следующий раз).
Для двух отсортированных списков (массивов) объедините их в один отсортированный список.
Вот некоторые вещи, которые следует учитывать:
- Возможность списков разной длины.
- Возможность списков из 1 элемента
- Создайте новый массив для отправки
- Имеют 2 переменные и увеличиваются только при нажатии элемента
#This implementation thanks to
Max Shawabkeh at stackoverflowdef 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, и я хотел бы поговорить о возможности присоединиться к вашей команде.