0

На пути в FAANG 9

Серия На пути к FAANG

Итак, за спиной еще неделя.

Тема графов оказалась не такой уж и простой, как я думал - сбивает с толку то, что каким-то образом это, блин, не отдельная структура данных! Обычно графы даются как набор граней (то есть тупо двухмерный массив), и нужно проделать несколько телодвижений, чтобы превратить это в мапу и начать уже BFS/DFS. Зато алгоритмы Прайма/Крускала оказались очень и очень легкими.

Вообще, именно топик с графами подсвечивает мне одну интересную проблему - говорят, что образцовое решение Medium алгоритма за редкими исключениями должно умещаться в 30 строчек. Каким образом в эти 30 строчек впихнуть, например, самописный класс UnionFind - хрен его знает. Тут либо оговаривать, что "это не считается", либо предлагать интервьюеру использовать воображение.

Еще забавно, что пока я грызу графы на LeetCode, добрые люди в Educative взяли и расширили несколько уже пройденных топиков моего курса. Топик по DP, например, разросся в два раза. Придется возвращаться и дорешивать, но я в целом не против. Вообще DP мне прям нравится, как и в принципе все рекурсивное (подход bottom-up заходит меньше, хотя не могу отрицать его изящность в некоторых случаях). Смешно вспоминать, что когда-то сама концепция рекурсии плотно выносила мне мозг. Даже жаль, что в работе ее практически не приходится использовать.

Сегодня пришла в голову идея подговить себе шпаргалки типа "Название алгоритма -> Алгоритм -> Применение". Ну то есть например:

BFS -> закидываем стартовый элемент в стек, далее в цикле -> вытаскиваем элемент из стека -> закидываем в стек соседей, удовлятворяющих условиям -> повторяем, пока не находим то, что нужно.

То же самое неплохо было бы сделать по паттернам типа бэктрекинга, которые скорее концепция, чем непосредственно алгоритм.

Собственно, выучить это все - и дело в шляпе. Звучит просто, но мне повезет, если я управлюсь до конца года. Впрочем, в этом же и кайф.

Лига программистов

2.3K поста12K подписчиков

Правила сообщества

- Будьте взаимовежливы, аргументируйте критику

- Приветствуются любые посты по тематике программирования

- Если ваш пост содержит ссылки на внешние ресурсы - он должен быть самодостаточным. Вариации на тему "далее читайте в моей телеге" будут удаляться из сообщества

Автор поста оценил этот комментарий

А смысл? Вон, основатель и гендиректор Stability AI Эмад Мостак в недавнем интервью говорит: профессия программиста вымрет через 5 лет. Уже сейчас более 40% кода пишется ИИ. Смысл запоминать структуры и алгоритмы?

раскрыть ветку (1)
0
DELETED
Автор поста оценил этот комментарий

Глава Stability AI просто пиарит свой продукт, ему простительно. Я для себя предпосылок вымирания программистов не вижу, просто устроиться джуном станет еще тяжелее, чем сейчас. Если Stability AI уволит всех своих программистов и доверит код ChatGPT - готов взять свои слова назад. Еще с большим удовольствием посмотрю на то, как нагенеренный сеткой код ставят на атомные станции, медицинские приборы, автопилоты машин и т.д.

показать ответы
0
Автор поста оценил этот комментарий

Тогда уж O(n+v), т.к. надо пробежать ещё и по рёбрам, а тут даже в теории не так однозначно всё становится, ведь v может оказаться много больше n. А ещё это потребление памяти.

Но, опять таки, я не помню что там за задачи на литкоде  были, возможно это и нормально будет преобразовать в объекты

раскрыть ветку (1)
DELETED
Автор поста оценил этот комментарий

Там действительно O(n), потому что входные данные (в тех задачах, что я видел) идут условно в формате [[2,3][1,2][3,0]], то есть тут одновременно и вершины, и ребра. Что касается потребления памяти - есть такое чувство, что в основном все смотрят на Time Complexity, а Space Complexity второстепенно.

показать ответы
1
Автор поста оценил этот комментарий

Как мне кажется, перелопачивать массивы в структуру будет сильно бить по производительности и памяти. Не спорю, с ними работать и удобнее, и бывает просто необходимо, но простые задачи на литкоде, наверняка, этого не потребуют.

Хотя я уже не помню, что там с графами было и в каком виде они передавались.

раскрыть ветку (1)
DELETED
Автор поста оценил этот комментарий

Ну, строго говоря, переброс массива в мапу - это + O(n), что будет критично только при TC основного алгоритма в O(1) и O(logN), в остальных случаях ей можно пренебречь.

показать ответы
DELETED
Автор поста оценил этот комментарий

А во ВСРАТОСЛАВ - не проще?

раскрыть ветку (1)
DELETED
Автор поста оценил этот комментарий

Проще, но я уже не в России и возвращаться не хочу, пройденный этап жизни.

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества