Comments 27
Осталось понять, где в работе этот навык пригождается. В большинстве случаев - это чисто флекс для прохождения собесов.
Да и на собесах часто нет, т.к. умению строить архитектуру и правильно декомпозировать задачку на удобные компоненты, насколько видел, leetcode не учит. Если я ошибся и там такое уже тоже появилось - порешал бы с удовольствием)
Как и многое в жизни - может быть не справедливо, не нравится, но никуда от этого не деться.
Сейчас выбор либо литкод и хорошие оферы, либо не литкод и зарплата в разы меньше. Покарйнемере в северной америке так.
А зачем?
Вы хоть статью прочитали? Автор всю её посвятил этому вопросу.
Встречный вам вопрос. А вы всё-всё в своей жизни делаете ради какой то возвышенной цели? Особенно интересно про свободное время. Здесь же автор вместо ежедневной вечерней деградации выбрал что-то с нагрузочкой. Ну браво, ну. Вероятно, и деменцию отодвинет на n лет. А я деградирую) И скипаю собесы с алгоритмами.
А вы всё-всё в своей жизни делаете ради какой то возвышенной цели?
Мимокрокодил: а почему цель обязательно должна быть "возвышенной"? "Мне это приносит удовольствие и хочется этим заниматься" - достаточный повод) У автора, имхо, это ключевое ("спортивный интерес"), проблем не вижу, быть счастливым делая что нравится - достойная цель сама по себе)
Автор посвятил вопросу мотивации (что может ответить на вопрос "зачем") только в части про мотивацию. Понимание структур данных, насмотренность (или знакомство) и спортивный интерес.
Реальная польза от этого, помимо бонусов во время формальных собесов, где это спрашивают, не раскрыта.
Здесь она, кажется, раскрыта (хотя критика присутствует).
Немного оффтоп, насчёт примера с бинарным поиском: лучше сделать "upper bound", а потом сравнить найденный элемент с искомым. В цикле не нужна проверка nums[mid] == target. В среднем элемент всё равно будет найден на предпоследней итерации, то есть по факту у вас в цикле просто на одну проверку больше.
У меня 2 "проблемы".
Я не могу решать быстро. По этой причине не участвую в литкодовских контестах.
Для большей части решённых задач я не смогу строго математически доказать правильность алгоритма. Для некоторых задач я просто строил таблицы "входные данные : результат" и находил закономерность.
Автор "не гонится за цифрами", поэтому пишет про стрики (кол-во дней подряд)... сомневаюсь, что он набил 365 дней своими силами. Как не последний человек в leetcode-е, прямо скажу что автор копипастил решения, т.к. шанс того, что ему не попалась какая-нибудь харда с < 20% ar = 0. Тогда о какой "погоне за навыками" идёт речь?
Ну, там же не обязательно решать день в день - у них Time Travel Ticket'ы есть. Я, правда, ни разу ими не пользовался -- не знаю, можно ли на месяц назад прыгнуть.
В базах, насколько я знаю, не совсем BST, а B tree используется.
Это верно. Для реляционных как правило используют B-tree. Из второй ссылки, к слову:
"The B-tree generalizes the binary search tree, allowing nodes to have more than two children"
А буквально BST используются в виде красно-черных деревьев.
Несколько раз я засучив рукава пытался со всех сил взять и прокачаться.
Если у вас сложности с мотивацией, возможно вам нет смысла решать задачи в таких количествах. Пару-тройку штук чтобы освоить какую-либо тему, нормально. Сотни - только если в охотку, иначе это бессмысленное достигаторство.
В своё время решил 200+ задач на Эйлере, вопросов как найти что меня драйвит даже не возникало. Было просто интересно.
Когда вы платите за изучение языка вы трудитесь более усердно, чем на бесплатных курсах. Когда вы покупаете абонемент в спортзал, вы посещаете его чаще, чем бесплатный турник на улице. Этот же принцип работает и с обучением алгоритмам.
Если это и работает, то только с определённым контингентом людей, которых именно трата денег мотивирует на что-то. Психолог бы сказал точно, в чём их/ваша боль.
Есть и другие люди, я в их числе, для которых ответы на эти три процитированных предложения: нет, нет и ещё раз нет.
Как сказал менеджер одного великого автоконцерна
Можно, а зачем?
Но ведь разборы для дейли задач обычно бесплатные и не требуют подписки. А встроенный дебаггер скорее минус - ведь на собеседование в бигтех его не всегда дают и заставляют в обычном блокноте писать
Но ведь разборы для дейли задач обычно бесплатные и не требуют подписки
Выше тоже про дейли задачи где-то было в комментариях. Решать что-то каждый день != решать только дейли.
Есть замечательный блок "Editorial", там по темам здорово сгруппировано. Отдельно про графы, даже про сортировку неожиданно для меня было интересно (например, Counting Sort). Думаю, что у конкурентов есть похожие штуки. Не хотел бы на конкретной платформе акцентировать
ведь на собеседование в бигтех его не всегда дают и заставляют в обычном блокноте писать
У меня было 6 собеседований в бигтех за последние 2 года. На некоторых был дебаггер, но нужно было прям работающее решение, на некоторых действительно код не запускали. "В обычном блокноте писать" – мне кажется это какая-то старая байка, я ни разу с таким не встречался (хотя тоже слышал).
Ты очень крут. Но я сам бросил где-то на 150-160 задач всего. Заметил что какие-то повторяться стали, плюс некоторые очевидно такие, что догадаться даже спустя часы не выйдет, либо знаешь, либо нет (ну да, да, как-то же к этому пришли, но и алгоритмы такие носят имена людей, и что-то не повторяются одни и те же имена часто, значит иногда дело глубоких знаний в узкой сфере и случая).
Так что я не знаю про какие ты 5-10 мин говоришь, я видел там топы и за 15 мин решали 4-5 задач турнирных. Но мне бы медиум уровень задачу за мин 40-60 и уже хорошо будет.
Я короче бросил, но может когда-то заведу новый лист и начну заново, пока что есть работа и другие занятия. Но ты реально крут все равно. У меня только бейджик 50 дней.
У брата препод коллега в универе , так он вообще процентиль где-то 99.99% похоже и почти все решил может 95% . Капец чел дотошный, но наверно долго он это делал, любитель такого.
Так что я не знаю про какие ты 5-10 мин говоришь
Я говорил о 5-10 минут страданий перед пустым листком и 0 идей. Если даже не появляется мыслей как подступиться к задаче то нет смысла сидеть и страдать 25-30 минут без прогресса. Лучше открыть подсказки, открыть решение, разобрать. В этом был посыл. Я очень много лишнего времени потерял на таком и сил.
Я точно не монстр из видосов, где экран моргает, код появляется огромными кусками за доли секунды и все сразу зелененькое и пройденное.
А вообще спасибо на добром слове :)
Осенью прочитал тут похожую статью про 600 дней литкода подряд, немного вдохновился и сел решать сам - 47 дней подряд - 84 задачи. У меня было принципиальный подход, что если посмотрел решения = задача решённой не считается.
Первую неделю решал контест ноябрьский, на 8 дней выпала hard задача, которую не смог дооптизимировать для последних тест-кейсов. И спустя 4 часа отложил её, и решил easy/medium. После этого просто выбирал каждый день случайную easy/medium задачу и решал её за 5-40 минут и продолжал стрик. Иногда, брал вторую, если первая совсем скучная.
Недавно продолбал один день, так как в запаре просто забыл решить и немного забросил тему, решив, что буду решать среднюю или сложную, когда "по кайфу". Спойлер за неделю - 0 задач.
Планирую вернуться, но пока не придумал подход, как мне было бы комфортно, интересно, но при этом полезно.
На всякий случай, если кто не знал : на литкоде есть квесты. Задачи те же, но отличие в том, что по умолчанию не доступна дискуссия, список тем и подсказки. Монетки там, вроде, дополнительные подкидывают при завершении квеста. Даёт ли прохождение [всех] квестов какие-то ощутимые бонусы - не знаю.
Leetcode. С нуля до 500+ задач. Сможешь и ты