На пути в FAANG 9
Итак, за спиной еще неделя.
Тема графов оказалась не такой уж и простой, как я думал - сбивает с толку то, что каким-то образом это, блин, не отдельная структура данных! Обычно графы даются как набор граней (то есть тупо двухмерный массив), и нужно проделать несколько телодвижений, чтобы превратить это в мапу и начать уже BFS/DFS. Зато алгоритмы Прайма/Крускала оказались очень и очень легкими.
Вообще, именно топик с графами подсвечивает мне одну интересную проблему - говорят, что образцовое решение Medium алгоритма за редкими исключениями должно умещаться в 30 строчек. Каким образом в эти 30 строчек впихнуть, например, самописный класс UnionFind - хрен его знает. Тут либо оговаривать, что "это не считается", либо предлагать интервьюеру использовать воображение.
Еще забавно, что пока я грызу графы на LeetCode, добрые люди в Educative взяли и расширили несколько уже пройденных топиков моего курса. Топик по DP, например, разросся в два раза. Придется возвращаться и дорешивать, но я в целом не против. Вообще DP мне прям нравится, как и в принципе все рекурсивное (подход bottom-up заходит меньше, хотя не могу отрицать его изящность в некоторых случаях). Смешно вспоминать, что когда-то сама концепция рекурсии плотно выносила мне мозг. Даже жаль, что в работе ее практически не приходится использовать.
Сегодня пришла в голову идея подговить себе шпаргалки типа "Название алгоритма -> Алгоритм -> Применение". Ну то есть например:
BFS -> закидываем стартовый элемент в стек, далее в цикле -> вытаскиваем элемент из стека -> закидываем в стек соседей, удовлятворяющих условиям -> повторяем, пока не находим то, что нужно.
То же самое неплохо было бы сделать по паттернам типа бэктрекинга, которые скорее концепция, чем непосредственно алгоритм.
Собственно, выучить это все - и дело в шляпе. Звучит просто, но мне повезет, если я управлюсь до конца года. Впрочем, в этом же и кайф.
Лига программистов
2.3K поста12K подписчиков
Правила сообщества
- Будьте взаимовежливы, аргументируйте критику
- Приветствуются любые посты по тематике программирования
- Если ваш пост содержит ссылки на внешние ресурсы - он должен быть самодостаточным. Вариации на тему "далее читайте в моей телеге" будут удаляться из сообщества