Расширение возможностей новичков: укрепление уверенности с помощью более 600 решений LeetCode – руководство для начинающих

Расширение возможностей новичков: укрепление уверенности с помощью более 600 решений LeetCode – руководство для начинающих

20 января 2024 г.

Как я решил более 600 проблем с LeetCode и вот мои рекомендации.

Я хочу рассказать вам историю о том, как я начал с уровня «не могу решить даже 1 простую задачу из 10» до уровня «могу решить любую вторую задачу среднего уровня» и прошел несколько сеансов кодирования на такие компании, как Мета, Букинг, Карим, Авито...

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

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

Первое, что приходит на ум, когда вы хотите начать решать проблемы LeetCode, — это открыть страницу задач https://leetcode.com/problemset/ all/ и начнём решать их последовательно.

Однако это не лучшая идея, даже если вы отфильтровываете простые задачи, поскольку многие задачи, помеченные как простые, являются весьма сложными. Это может демотивировать и даже снизить вашу самооценку.

Советы:

  1. Первый совет. Обратите внимание на коэффициент принятия; чем выше, тем лучше. Это указывает на то, что многим людям удается решить проблему, что увеличивает вероятность того, что и вы сможете. Кроме того, вы можете изучить план обучения и попробовать решить проблемы оттуда:
  2. * Топ-100 понравившихся: список задач, которые понравились больше всего. Если лайков много, есть шанс, что это не запутанная проблема, которая может снизить вашу оценку.

     
    
      <ли>

      150 лучших интервью: список 150 самых популярных проблем при подготовке к собеседованию. Скорее всего, вы столкнетесь с ними на собеседованиях, но некоторые из них могут оказаться непростыми, особенно на ранних этапах.

      * LeetCode 75: описан как «Список задач, которые необходимо выполнить для подготовки к собеседованию». Эти проблемы распределены по различным темам; решите их, следуя следующему совету.

      2. Второй совет — начните с самых фундаментальных структур данных, таких как массивы (одномерные/двумерные), наборы, . >хэш-карты и т. д.; вы будете сталкиваться с ними часто. Например, во многих задачах время выполнения можно сократить, добавив набор или хэш-карту (хотя имейте в виду, что это может увеличить потребление памяти). Только после их освоения вам следует углубляться в другие структуры, такие как стеки, очереди, связанные списки, деревья и < strong>графики.

    В LeetCode есть карточки с объяснением структур данных и алгоритмов, а также задач для закрепления этих концепций — LeetCode Explore. Как упоминалось ранее, начинайте с простых карточек, таких как массивы и строки, постепенно увеличивая сложность.

    Я пересматривал эти карты несколько раз, потому что некоторые концепции изначально были неясны. Не думайте, что что-то не так, если что-то неясно; вернитесь позже, и, возможно, вы поймете, что теперь все поняли.

    Вот некоторые дополнительные ресурсы: * LeetCode Learn: карточки с пояснениями и задачами. * Дорожная карта Neetcode: дорожная карта с темами и проблемами; настоятельно рекомендуется. * Справочник по техническим интервью. Создайте еженедельный план, используя различные фильтры. * Шаблоны LeetCode: список из 150 популярных задач, сгруппированных по темам, сложности и компаниям.

     
    
    1. Третий совет. Если вы не можете найти оптимальное решение, начните с решения методом грубой силы. Получив это, подумайте, как его улучшить.
    2. Можете ли вы использовать определенную структуру данных?

      Можно ли отсортировать массив?

      Что, если вы используете набор или хэш-карту?

      Есть ли шаблон, который вы можете применить?

      Если ничего не помогает и вы уже потратили 20-40 минут, смело открывайте решение и изучайте его. После этого закройте решение и попробуйте решить его еще раз (это может занять несколько итераций, что нормально). Если вам все еще не удается решить задачу после нескольких попыток, попробуйте напечатать решение (я делал это несколько раз).

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

      4. Четвертый совет – просмотрите эти 14 шаблонов здесь, особое внимание уделяется двум указателям, скользящим окнам и быстрому и amp; медленные указатели, поскольку они часто встречаются. Возьмите шаблон, найдите проблемы, связанные с этим шаблоном (на странице проблем LeetCode используйте фильтр для тегов, например «Два указателя» или «Скользящее окно»), и решите достаточно задач, чтобы закрепить свое понимание этого шаблона. тема.

      5. Пятый и самый важный совет — практика, практика и еще раз практика. Вначале мне часто хотелось плакать от разочарования, потому что я не мог решить даже простые проблемы. Это не преувеличение. Мысль «Я такой тупой» не давала мне покоя первые несколько месяцев.

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

      Решение проблем LeetCode теперь решается на платформе Firecode, где проблемы представлены одна за другой, начиная с простых и возвращаясь к ранее решенным проблемам. для армирования. Имеются объяснения по различным темам, и после решения проблемы вы можете увидеть, как к ней подошли другие, что очень полезно для понимания различных стратегий решения.

      Часто задаваемые вопросы:

      Что мне делать, если я не могу решить проблему?

      Если вы не можете решить проблему через 30–40 минут, посмотрите решение и попробуйте найти видеорешение этой проблемы. После просмотра и понимания попытайтесь решить задачу еще раз. В случае неудачи повторите процедуру. Периодически возвращайтесь к старым проблемам, особенно к тем, которые были сложными. Иногда я решал одну и ту же задачу 10–15 и более раз.

      Сколько проблем мне следует решить, прежде чем подавать заявление на работу?

      Это индивидуально. Я потратил шесть месяцев на решение нескольких задач каждый день, около 300 задач, прежде чем почувствовал прочную основу. Уверенность пришла после решения около 400-500 задач. Некоторым, возможно, нужно решить всего 100-200 задач, но, к сожалению, я не в их числе.

      Какой язык программирования лучше всего подходит для решения проблем?

      Коротко — Python. Я начал с PHP, перешёл на Go, а затем на Java. Посмотрев видео, я попробовал Python и с тех пор использую его. Лаконичный код Python, встроенные функции (такие как Counter, defaultdict, divmod, лямбда и т. д.) и скорость являются преимуществами во время собеседований.

      Как найти время для решения проблем?

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

      Стоит ли покупать LeetCode Premium?

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

      Стоит ли покупать доступ к educative.io?

      Хотя существует множество рекомендаций по образовательному курсу Grokking Coding Interview Patterns, я не нашел его очень полезным. Визуальные объяснения были единственным положительным моментом. На мой взгляд, просмотр видео на YouTube — лучшая альтернатива.

      Стоит ли покупать доступ к algoexpert.io?

      На мой взгляд, algoexpert.io — очень полезный ресурс. Каждая задача сопровождается подробными пояснениями в видеороликах продолжительностью 30-50 минут. У них часто проводятся акции, и иногда можно получить все курсы на год за 99 долларов. У него разумная цена, приятный веб-сайт, множество тестовых примеров и удобный редактор.

      leetcode rewind за 2023 год

      Результаты:

      1. Достиг своей первоначальной цели по решению алгоритмов — прошёл собеседования по программированию, важный шаг в компаниях FAANG. Успешно прошла несколько собеседований, а главное больше не боюсь этого этапа.
      2. 2. Углубленное понимание структур данных. Не зная, что такое куча, я теперь имею полное представление об этой и других структурах.

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

        4. И последнее, но не менее важное: фитнес для мозга. Переход от «не хочу этого делать» к «хочу решать проблемы каждый день».

        Полезные ссылки:


        Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE