foundation

Структуры данных

Массивы, списки, стеки, очереди, hash tables, деревья, heap, trie и графы.

Вопросы про структуры данных проверяют, умеете ли вы сопоставить паттерны доступа с нужной абстракцией. Массивы сильны в индексированном доступе и последовательном обходе. Связные списки жертвуют индексацией ради дешёвой перестановки указателей. Стеки и очереди кодируют инварианты LIFO и FIFO. Hash map покупает средний O(1) lookup ценой памяти. Деревья и графы моделируют иерархию и связи; heap — выбор по приоритету.

Перед кодом спросите: какие операции доминируют — lookup, insert, delete, min/max, prefix search или traversal? Ответ определяет выбор структуры сильнее, чем привычка к одному паттерну.

На интервью: называйте среднюю и худшую сложность, сравнивайте минимум два варианта и объясняйте компромисс по памяти.

Типовые ошибки: hash map, когда нужен sorted order; Array.shift как очередь в чувствительном к производительности коде; предположение о сбалансированном дереве при перекошенном входе.

Чеклист:

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