foundation
Поиск и обход
Linear search, binary search, BFS, DFS и предусловия, при которых они корректны.
Linear search работает везде, но сканирует каждый candidate. Binary search быстрее только когда search space sorted или monotonic. BFS исследует по distance в unweighted graphs; DFS идет в глубину и полезен для components, backtracking и recursive tree processing.
Компромисс: сравните время, память и сложность реализации до выбора структуры или паттерна.
На интервью: Ключевой сигнал - доказать precondition: sorted array, monotonic predicate, unweighted graph или visited set для cyclic structures.
Типовые ошибки: Off-by-one ошибки в binary search очень часты. BFS с Array.shift может быть inefficient в JavaScript. Recursive DFS может переполнить stack на deep inputs.
Чеклист:
- Докажите monotonicity.
- Определите inclusive или exclusive bounds.
- Используйте head index для queue.
- Отслеживайте visited nodes.