Pull to refresh
109.24
InlyIT
Для старательного нет ничего невозможного

Как прорешать тысячу задач на Leetcode за триста дней

Reading time4 min
Views26K
Original author: Mansi Agarwal
Привет, меня зовут Мэнси Эгэрвэл, я контент-менеджер в компании Favtutor. Недавно я добралась до отметки в тысячу решенных задач на Leetcode, и подумала, что хорошо бы поделиться своим опытом с другими.

В прошлом мой интерес часто привлекали зеленые метки и разнообразные значки в профилях у других людей, а теперь у меня самой есть такие. Вот как выглядит мой профиль на Leetcode в данный момент.



Однако, если взглянуть на статистику за 2022 год, то там не обнаружится почти ничего. Как можно видеть, произошли серьезные перемены!



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

Как мне удалось преодолеть рубеж в тысячу задач?


Прорешать тысячу задач – дело непростое. В определенный момент начинаешь скучать и возникает желание приняться за исследование других областей. Тем не менее для достижения своей цели придется вложить время и труд.

Я начала писать код на первом курсе. Тогда многие среди моих однокурсников боролись за страйки на Snapchat. Тогда-то мне и пришла в голову мысль удерживать страйки на Codeforces, а впоследствии и на Leetcode. Страйки помогали мне при помощи простых цифр сохранять регулярность и не отступаться от задуманного.

Погружаться в тему. Я завела привычку: изучая новую тему, решать три-четыре задачи по ней ежедневно – это помогало лучше ее проработать. После того как мне удавалось найти рабочее решение, я обычно знакомилась и с другими подходами, чтобы понять, какой из них является оптимальным.

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

Планы я составляла таким образом: по прошествии некоторого времени заносила данные на Google Docs, что помогало оценивать прогресс также и по месяцам. Да, к слову, скажу сразу, прежде чем кто-то осудит: почерк у меня… в общем, я над этим работаю.



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

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

Ошибки, которые я допускала в процессе обучения


Не застревать на одной задаче. Одна из самых серьезных моих ошибок – склонность уделять слишком много времени одной задаче. Если за 15-20 минут никак не удалось продвинуться, загляните в подсказки. Если по истечению часа вы все еще в тупике, ищите решение в обсуждениях.

Рассматривать разные подходы. Раньше я все силы бросала на то, чтобы прорешать как можно больше задач. Однако на собеседовании могут расспрашивать о разных методах – допустим, с применением грубой силы или метода оптимальных решений. Соответственно, при решении задачи следует делать обзор всех возможных вариантов.

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

Избегать прорешенивания однообразных задач. Это распространенная ошибка. Поначалу я десятками щелкала простые задачки как орешки. Простые задачи помогают прояснить основы, но спешка здесь не нужна. Если простые задачи уже идут легко, переходите на средний уровень сложности, а если успешно справляетесь со сложными – берите следующую тему. Помните, что качество важнее количества.

Полезные инструменты, которые ускорили мой прогресс


Leetcode Big Omega: Это расширение для Google Chrome, которое выводит тэги компаний. Когда я готовилась к собеседованию в определенной компании, то могла отбирать задачи, которые там используются. Это расширение существенно облегчило для меня подготовку.



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

Таймер для Leetcode. С помощью этого расширения для Chrome я отслеживала, сколько времени трачу на ту или иную задачу. Это давало возможность задать временной лимит для простых, средний и сложных заданий – расширение оповещало меня, когда этот лимит превышался. Так время использовалось оптимальным образом.



Заключение


То, что я решила тысячу задач на Leetcode, само по себе не имеет значения – важно то, научилась ли я их решать в кратчайшие сроки. На этапе собеседования, посвященном написанию кода, на решение трех задач дают лишь полтора часа. Постарайтесь избегать моих ошибок и неустанно исследуйте LeetCode Discuss – там можно найти много ценных сведений.
Tags:
Hubs:
Total votes 14: ↑11 and ↓3+13
Comments15

Articles

Information

Website
inlyit.com
Registered
Founded
Employees
31–50 employees
Location
Россия