Как решать задачу на алгоритмической секции
Вопрос
Расскажи, как ты действуешь на алгоритмической секции с момента получения задачи до сдачи решения.
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Уточняю условие и ограничения, по ним оцениваю нужную сложность
Разбираю пример руками и проговариваю идею до кода
Сначала простое решение, потом оптимизация
Пишу с понятными именами и сразу думаю о типах и переполнении
Прогоняю на примере и краевых случаях
Называю итоговую сложность по времени и памяти
Что могут спросить следом
- Что делаешь, если не знаешь решения?
- Как проверяешь код без запуска?
- Когда стоит писать брутфорс?
Разбор
Сначала уточняю условие: формат ввода, ограничения, могут ли быть отрицательные числа или повторы. Размер входа сразу подсказывает сложность: при 10^5 нужен O(n log n), значит ищу сортировку, бинарный поиск, хеш-таблицу или два указателя. Разбираю пример руками и вслух проговариваю идею, прежде чем писать код, чтобы интервьюер мог поправить меня рано. Если оптимальное решение не видно, называю простое, оцениваю его сложность и улучшаю. Пишу аккуратно: понятные имена, Long там, где суммы могут переполниться, быстрый ввод. Потом прогоняю код вручную на примере и на краевых случаях: пустые данные, один элемент, все одинаковые, максимальные значения. В конце называю сложность по времени и памяти и говорю, что ещё можно улучшить.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.