Подписаться
Опубликовано

Привычка решать задачи LeetCode ежедневно

Автор
  • Имя
    Айнур пишет ... 📝
    Telegram

С начала января я завел себе странную привычку — решаю задачки на LeetCode каждый день. Хотя, это пока сложно назвать привычкой, поскольку бывают дни когда нужно заставлять себя это делать. Толчком стал тред в вастрик клубе, где люди делились своими профилями и прогрессом. Вообще, лет пять назад я уже баловался с алгоритмическими задачами, но на сodewars.

Чтобы не мучиться с выбором задач, взял готовый план LeetCode 75. Это удобно: задачи идут по темам — массивы, строки, деревья, скользящие окна и все такое. Сразу понимаешь, какой подход или структуру данных нужно применить. За месяц я решил около 50 задач уровня Medium и Easy. Темп примерно 1–2 задачи в день. В какие то дни не было времени или сил, тогда решал что-нибудь совсем простое за 5-10 минут.

По моим наблюдениям, в LeetCode есть задачи, которые отнимают кучу времени не потому, что решение сложное, а из-за специфичных условий. Их либо сложно понять, либо легко понять неправильно. Часто не хватает простого и наглядного примера того, что подается на вход и что должно получиться на выходе — и все стало бы понятно. Один из ярких примеров — задача 649. Dota2 Senate. Я раз десять перечитывал условие и лез в комментарии.

Но есть и приятные задачи, которые внезапно решались минут за пять, хотя их уровень был заявлен как Medium. Особенно понравились те, где идет постепенное усложнение типа Path Sum, II, III.

Я решаю задачки на Scala — это язык, которым пользуюсь практически каждый день, так что проще не отвлекаться на синтаксис. Был соблазн взяться за что-то типа Golang или Rust для разнообразия, но потом подумал: «Не сегодня». Вероятно, позже захочу сменить язык.

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

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

#leetcode

Айнур пишет ... 📝
257 подписчиков
27 постов
Живу в Екатеринбурге, занимаюсь бэкенд разработкой. Тут делюсь опытом, мыслями и заметками из прочитанных книг. Написать мне в личку - @ainr_c Мой блог - https://ainur-khakimov.ru

Свежие посты

Опубликовано

Классические абстракции используемые в ФП

Что такое классические тайпклассы в ФП: полугруппы, моноиды, функторы, аппликативы
Опубликовано

Краткое содержание книги «Цель» Голдратта

Обзор книги «Цель» Элияху Голдратта: системный подход, ограничение, бутылочное горлышко, повышение эффективности производства и продуктивности
Опубликовано

Лонгрид про Scalafix

Scalafix лонгрид: как писать кастомные правила линтинга и рефакторинга Scala
Опубликовано

Последовательность выполнения задач

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

Зеленые и красные задачи

Как различать зеленые и красные задачи в личной продуктивности