Comments 37
Осталось понять, где в работе этот навык пригождается. В большинстве случаев - это чисто флекс для прохождения собесов.
Да и на собесах часто нет, т.к. умению строить архитектуру и правильно декомпозировать задачку на удобные компоненты, насколько видел, leetcode не учит. Если я ошибся и там такое уже тоже появилось - порешал бы с удовольствием)
Как и многое в жизни - может быть не справедливо, не нравится, но никуда от этого не деться.
Сейчас выбор либо литкод и хорошие оферы, либо не литкод и зарплата в разы меньше. Покарйнемере в северной америке так.
никуда от этого не деться
Почему это? Не заморачивался на литкоде и это никак не мешало трудоустраиваться в РФ. Без понятия как там на Западе, это уже на реддит, тут русскоязычный ресурс и в РФ без прорешивания литкода кроме яндекса живётся вполне нормально
А зачем?
Вы хоть статью прочитали? Автор всю её посвятил этому вопросу.
Встречный вам вопрос. А вы всё-всё в своей жизни делаете ради какой то возвышенной цели? Особенно интересно про свободное время. Здесь же автор вместо ежедневной вечерней деградации выбрал что-то с нагрузочкой. Ну браво, ну. Вероятно, и деменцию отодвинет на n лет. А я деградирую) И скипаю собесы с алгоритмами.
А вы всё-всё в своей жизни делаете ради какой то возвышенной цели?
Мимокрокодил: а почему цель обязательно должна быть "возвышенной"? "Мне это приносит удовольствие и хочется этим заниматься" - достаточный повод) У автора, имхо, это ключевое ("спортивный интерес"), проблем не вижу, быть счастливым делая что нравится - достойная цель сама по себе)
Автор посвятил вопросу мотивации (что может ответить на вопрос "зачем") только в части про мотивацию. Понимание структур данных, насмотренность (или знакомство) и спортивный интерес.
Реальная польза от этого, помимо бонусов во время формальных собесов, где это спрашивают, не раскрыта.
Здесь она, кажется, раскрыта (хотя критика присутствует).
Немного оффтоп, насчёт примера с бинарным поиском: лучше сделать "upper bound", а потом сравнить найденный элемент с искомым. В цикле не нужна проверка nums[mid] == target. В среднем элемент всё равно будет найден на предпоследней итерации, то есть по факту у вас в цикле просто на одну проверку больше.
У меня 2 "проблемы".
Я не могу решать быстро. По этой причине не участвую в литкодовских контестах.
Для большей части решённых задач я не смогу строго математически доказать правильность алгоритма. Для некоторых задач я просто строил таблицы "входные данные : результат" и находил закономерность.
Автор "не гонится за цифрами", поэтому пишет про стрики (кол-во дней подряд)... сомневаюсь, что он набил 365 дней своими силами. Как не последний человек в leetcode-е, прямо скажу что автор копипастил решения, т.к. шанс того, что ему не попалась какая-нибудь харда с < 20% ar = 0. Тогда о какой "погоне за навыками" идёт речь?
Ну, там же не обязательно решать день в день - у них Time Travel Ticket'ы есть. Я, правда, ни разу ими не пользовался -- не знаю, можно ли на месяц назад прыгнуть.
суть даже не в этом, говорить что "я не гонюсь за цифрами" и набивать стрики звучит как-то противоречиво. Опять же, не факт что все задачи (в течении 365 дней) автор набил сам, поэтому в чем тогда смысл копипастить?
У него стрик не с ежедневными задачами, который из себя фильм ужасов представляет, а стрик с ежедневной активностью, это нужно в день сделать любой сабмит. Мне кажется даже если сабмит не принят он учитывается в ежедневной активности. Я так набил бейджик на 50 дней за этот год не решив даже 50 задач.
Под надписью "Мой профиль выдерживая режим" картинка с девятью бейджиками. Полагаю, это месячные бейджики, которые выдаются за полный закрытый месяц (т.е. за все POTD месяца, а не за то, что каждый день что-то сабмитишь). 9 месяцев подряд выглядят неправдоподобно круто. Я не утверждаю, что это невозможно без Time Travel, но прям сомнительно (разумеется, я оцениваю по собственному уровню)
там всего можно 3 дня отмотать в месяц (т.е. 27 дней условно решил, 3 дня попался гроб ,скипнул если не успел, и потом закрыл)
В базах, насколько я знаю, не совсем 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 минут без прогресса. Лучше открыть подсказки, открыть решение, разобрать. В этом был посыл. Я очень много лишнего времени потерял на таком и сил.
Я точно не монстр из видосов, где экран моргает, код появляется огромными кусками за доли секунды и все сразу зелененькое и пройденное.
А вообще спасибо на добром слове :)
Да, некоторые совсем дикие, я скорее покупал подписку чтобы смотреть как другие решали (когда уже на графике можно посмотреть чужие решения, а не только те, что в study, обычно два типа - решение с выигрышем по времени и второе решение по памяти). Самые долбанутые в одну строку с built in какими-то функциями через __ префикс суффикс или что-то такое (в c++)
Осенью прочитал тут похожую статью про 600 дней литкода подряд, немного вдохновился и сел решать сам - 47 дней подряд - 84 задачи. У меня было принципиальный подход, что если посмотрел решения = задача решённой не считается.
Первую неделю решал контест ноябрьский, на 8 дней выпала hard задача, которую не смог дооптизимировать для последних тест-кейсов. И спустя 4 часа отложил её, и решил easy/medium. После этого просто выбирал каждый день случайную easy/medium задачу и решал её за 5-40 минут и продолжал стрик. Иногда, брал вторую, если первая совсем скучная.
Недавно продолбал один день, так как в запаре просто забыл решить и немного забросил тему, решив, что буду решать среднюю или сложную, когда "по кайфу". Спойлер за неделю - 0 задач.
Планирую вернуться, но пока не придумал подход, как мне было бы комфортно, интересно, но при этом полезно.
На всякий случай, если кто не знал : на литкоде есть квесты. Задачи те же, но отличие в том, что по умолчанию не доступна дискуссия, список тем и подсказки. Монетки там, вроде, дополнительные подкидывают при завершении квеста. Даёт ли прохождение [всех] квестов какие-то ощутимые бонусы - не знаю.
Сильно демотивирует, когда через какое-то время, уже ничего из этих задач не помнишь. В реальной работе эти знания не используются, поэтому надо их постоянно тренировать, чтобы просто не забыть. Как это всё совмещать с работой над реальным проектом и каким-то отдыхом после работы - решительно непонятно.
поэтому надо их постоянно тренировать
Ну... Я бы тут не согласился. Невозможно находиться всегда на пике формы. Периодически проседать – абсолютно нормально. Перед заходом на цикл собеседований 2-3 недели каждый день нужно порешать, чтобы руку набить. В остальное время можно прокачивать что-нибудь другое
Возможно это индивидуально всё, спорить не буду. В моём случае, надо где-то не реже чем раз в пол-года всё по новой повторять, чтобы не забыть, а это без ясной мотивации довольно проблематично сделать.
Хотя конечно если не целиться на бигтех, где по 5 техсобесов с хард-задачками, которые надо решить без ошибок за минимальное время, то всё попроще. Базовый уровень и основные алгоритмы, думаю вполне можно запомнить надолго.
Хотя конечно если не целиться на бигтех, где по 5 техсобесов с хард-задачками, которые надо решить без ошибок за минимальное время
На моем опыте обычно medium дают, либо 1 easy и 1 medium. Хард не припомню даже
Базовый уровень и основные алгоритмы, думаю вполне можно запомнить надолго
Мне кажется это основная польза для человека, который не целится в бигтех. А то, что рука местами не набита – и ладно. Как-то что-то где-то все равно решишь при необходимости
Как это всё совмещать с работой над реальным проектом и каким-то отдыхом после работы - решительно непонятно.
Я, кстати, не знаю, откуда люди берут силы после работы. Я наоборот свеженький с утра делаю что-то для себя, потом работа. Отдыхом так вообще пренебрегать опасное дело
Leetcode. С нуля до 500+ задач. Сможешь и ты