Как решать LeetCode задачи
Отвечаю на вопрос "А как решать задачи на литкоде?", который часто встречаю в разных формулировках у себя в комментариях.
Сразу обозначу, что чтобы научиться решать литкод задачи, нужно решать литкод задачи. Некоторые решают литкод задачи чтобы подготовиться к собеседованию. Некоторые просто для расширения кругозора, для набора общего опыта (я для этого решаю).
Если вы думаете, что научившись решать литкод задачи вы станете классным прогаммистом, скажу, что это так не работает. Не станете.
Решение задачек на литкоде это заучивание паттернов. Если вы пробовали решать дейли задачки, то могли заметить, что одну-две недели подряд идёт примерно одна и та же тема, просто под разными соусами.
Выбирайте популярные задачи, у которых высокий процент принятия, начинайте с Easy задач. Не на каждом собесе спросят Medium, а Hard вообще нужен только чтобы потешить своё самолюбие.
Итак, как решать задачи на LeetCode
Открываете задачку. Читаете условие, выводите для себя границы задачи. Я в каждом ролике начинаю с чтения условий задачи, объясняю своими словами, что имеется в виду.
Пытаетесь решить задачу. Нужно сначала потупить, попытаться решить. Посмотрите, что у вас вообще получается. Вдруг выйдет решить задачу.
Если не получается, можно (как опциональный этап) посмотреть похожие задачи, попробовать решить их. Но, скорее всего, вам будет лень.
Поэтому переходите к поиску разборов решения. Нужно не просто готовое решение, а целый разбор с объяснением, почему именно так. Текстовый разбор, видео с решением (например как у меня) - на ваше усмотрение. После просмотра объяснения попробуйте решить задачу самостоятельно. Вы уже знаете суть, понимаете решение. Если не поняли, то посмотрите другой разбор. И переходите к коду.
Воспроизведите код как запомнили: это важно сделать по памяти, ведь когда вы запоминаете, вы не заучиваете расположение символов, вы выстраиваете логическую связь: что за чем идёт, какие сравнения, и так далее.
Если не удаётся воспроизвести, пересмотрите разбор и попробуйте ещё раз.
Всё ещё не можете понять? Это не повод расстраиваться. Таблицу умножения мы тоже когда-то заучивали. Нет ничего страшного в том, что вы не поняли суть, но запомнили решение. Из этих кирпичиков потом строится более сложное решение. Перепишите весь код вручную (никакой копипасты!), но все переменные называйте иначе, как-то по-своему. Это заставит вас следить за сутью кода, а не переписывать вслепую, вам придётся следить за сущностями, которыми вы оперируете.
Если полученный код не работает, сравните через любой diff checker (в PyCharm это compare with clipboard). Возьмите готовое решение, поменяйте там переменные на свои, сравните, где вы перепутали оператор, добавили лишний отступ, или обратились не к той сущности.
После того, как удалось подготовить рабочее решение, и литкод показал вам случайные числа, поставьте себе напоминание на завтра, чтобы вы решили эту задачку снова. Через неделю вернитесь к этой задаче вновь. После решения вернитесь к этой задаче ещё через месяц.
Так вы запомните суть и решение этой задачи.
Ну, это всё актуально, если вам действительно хочется разобраться и научиться.
Через сотню-другую задач вы начнёте замечать повторяющиеся модели / структуры задач, и будет легче.
#текст