Задачи LeetCode

Top interview 150 — начатый личный трекер. Разобранные задачи должны хранить не только финальный код, но и восстановимый ход решения.

Карточка разбора

Контракт:
- что означает вход;
- можно ли менять данные;
- что вернуть при пустом входе;
- есть ли дубликаты/overflow.
 
Brute force:
- простое корректное решение;
- время и память.
 
Улучшение:
- какой повтор работы устраняем;
- инвариант цикла/структуры;
- почему решение завершается.
 
Проверки:
- empty / one;
- duplicates;
- min/max;
- already sorted / reverse.

Узнаваемые шаблоны

Сигнал в условииПроверить
отсортированный массивbinary search, two pointers
непрерывный подмассивsliding window, prefix sum
пары/частотыhash map
top Kheap
вложенная структураDFS/BFS
все вариантыbacktracking
оптимум из повторных подзадачdynamic programming

Пример слияния двух указателей: Merge sorted array.

На собеседовании

  • С чего начать после чтения задачи? Пересказать контракт и edge cases.
  • Зачем сначала brute force? Зафиксировать корректность и точку оптимизации.
  • Что объяснять вместе с кодом? Инвариант и сложность.
  • Когда hash map не бесплатна? Есть память O(n), hashing и worst-case/коллизии.