С
logo
Сурен Хоренян | Программирование

Как решать LeetCode задачи

Как ‎решать‏ ‎LeetCode ‎задачи


Отвечаю ‎на ‎вопрос ‎«А‏ ‎как ‎решать‏ ‎задачи‏ ‎на ‎литкоде?», ‎который‏ ‎часто ‎встречаю‏ ‎в ‎разных ‎формулировках ‎у‏ ‎себя‏ ‎в ‎комментариях.


Сразу‏ ‎обозначу, ‎что‏ ‎чтобы ‎научиться ‎решать ‎литкод ‎задачи,‏ ‎нужно‏ ‎решать ‎литкод‏ ‎задачи. ‎Некоторые‏ ‎решают ‎литкод ‎задачи ‎чтобы ‎подготовиться‏ ‎к‏ ‎собеседованию.‏ ‎Некоторые ‎просто‏ ‎для ‎расширения‏ ‎кругозора, ‎для‏ ‎набора‏ ‎общего ‎опыта‏ ‎(я ‎для ‎этого ‎решаю).

Если ‎вы‏ ‎думаете, ‎что‏ ‎научившись‏ ‎решать ‎литкод ‎задачи‏ ‎вы ‎станете‏ ‎классным ‎прогаммистом, ‎скажу, ‎что‏ ‎это‏ ‎так ‎не‏ ‎работает. ‎Не‏ ‎станете.


Решение ‎задачек ‎на ‎литкоде ‎это‏ ‎заучивание‏ ‎паттернов. ‎Если‏ ‎вы ‎пробовали‏ ‎решать ‎дейли ‎задачки, ‎то ‎могли‏ ‎заметить,‏ ‎что‏ ‎одну-две ‎недели‏ ‎подряд ‎идёт‏ ‎примерно ‎одна‏ ‎и‏ ‎та ‎же‏ ‎тема, ‎просто ‎под ‎разными ‎соусами.


Выбирайте‏ ‎популярные ‎задачи,‏ ‎у‏ ‎которых ‎высокий ‎процент‏ ‎принятия, ‎начинайте‏ ‎с ‎Easy ‎задач. ‎Не‏ ‎на‏ ‎каждом ‎собесе‏ ‎спросят ‎Medium,‏ ‎а ‎Hard ‎вообще ‎нужен ‎только‏ ‎чтобы‏ ‎потешить ‎своё‏ ‎самолюбие.


Итак, ‎как‏ ‎решать ‎задачи ‎на ‎LeetCode


Открываете ‎задачку.‏ ‎Читаете‏ ‎условие,‏ ‎выводите ‎для‏ ‎себя ‎границы‏ ‎задачи. ‎Я‏ ‎в‏ ‎каждом ‎ролике‏ ‎начинаю ‎с ‎чтения ‎условий ‎задачи,‏ ‎объясняю ‎своими‏ ‎словами,‏ ‎что ‎имеется ‎в‏ ‎виду.


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


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


Поэтому ‎переходите‏ ‎к ‎поиску ‎разборов ‎решения. ‎Нужно‏ ‎не ‎просто‏ ‎готовое‏ ‎решение, ‎а ‎целый‏ ‎разбор ‎с‏ ‎объяснением, ‎почему ‎именно ‎так.‏ ‎Текстовый‏ ‎разбор, ‎видео‏ ‎с ‎решением‏ ‎(например ‎как ‎у ‎меня) ‎—‏ ‎на‏ ‎ваше ‎усмотрение.‏ ‎После ‎просмотра‏ ‎объяснения ‎попробуйте ‎решить ‎задачу ‎самостоятельно.‏ ‎Вы‏ ‎уже‏ ‎знаете ‎суть,‏ ‎понимаете ‎решение.‏ ‎Если ‎не‏ ‎поняли,‏ ‎то ‎посмотрите‏ ‎другой ‎разбор. ‎И ‎переходите ‎к‏ ‎коду.


Воспроизведите ‎код‏ ‎как‏ ‎запомнили: ‎это ‎важно‏ ‎сделать ‎по‏ ‎памяти, ‎ведь ‎когда ‎вы‏ ‎запоминаете,‏ ‎вы ‎не‏ ‎заучиваете ‎расположение‏ ‎символов, ‎вы ‎выстраиваете ‎логическую ‎связь:‏ ‎что‏ ‎за ‎чем‏ ‎идёт, ‎какие‏ ‎сравнения, ‎и ‎так ‎далее.


Если ‎не‏ ‎удаётся‏ ‎воспроизвести,‏ ‎пересмотрите ‎разбор‏ ‎и ‎попробуйте‏ ‎ещё ‎раз.


Всё‏ ‎ещё‏ ‎не ‎можете‏ ‎понять? ‎Это ‎не ‎повод ‎расстраиваться.‏ ‎Таблицу ‎умножения‏ ‎мы‏ ‎тоже ‎когда-то ‎заучивали.‏ ‎Нет ‎ничего‏ ‎страшного ‎в ‎том, ‎что‏ ‎вы‏ ‎не ‎поняли‏ ‎суть, ‎но‏ ‎запомнили ‎решение. ‎Из ‎этих ‎кирпичиков‏ ‎потом‏ ‎строится ‎более‏ ‎сложное ‎решение.‏ ‎Перепишите ‎весь ‎код ‎вручную ‎(никакой‏ ‎копипасты!),‏ ‎но‏ ‎**все ‎переменные**‏ ‎называйте ‎иначе,‏ ‎как-то ‎по-своему.‏ ‎Это‏ ‎заставит ‎вас‏ ‎следить ‎за ‎сутью ‎кода, ‎а‏ ‎не ‎переписывать‏ ‎вслепую,‏ ‎вам ‎придётся ‎следить‏ ‎за ‎сущностями,‏ ‎которыми ‎вы ‎оперируете.


Если ‎полученный‏ ‎код‏ ‎не ‎работает,‏ ‎сравните ‎через‏ ‎любой ‎diff ‎checker ‎(в ‎PyCharm‏ ‎это‏ ‎compare ‎with‏ ‎clipboard). ‎Возьмите‏ ‎готовое ‎решение, ‎поменяйте ‎там ‎переменные‏ ‎на‏ ‎свои,‏ ‎сравните, ‎где‏ ‎вы ‎перепутали‏ ‎оператор, ‎добавили‏ ‎лишний‏ ‎отступ, ‎или‏ ‎обратились ‎не ‎к ‎той ‎сущности.


После‏ ‎того, ‎как‏ ‎удалось‏ ‎подготовить ‎рабочее ‎решение,‏ ‎и ‎литкод‏ ‎показал ‎вам ‎случайные ‎числа,‏ ‎поставьте‏ ‎себе ‎напоминание‏ ‎на ‎завтра,‏ ‎чтобы ‎вы ‎решили ‎эту ‎задачку‏ ‎снова.‏ ‎Через ‎неделю‏ ‎вернитесь ‎к‏ ‎этой ‎задаче ‎вновь. ‎После ‎решения‏ ‎вернитесь‏ ‎к‏ ‎этой ‎задаче‏ ‎ещё ‎через‏ ‎месяц.

Так ‎вы‏ ‎запомните‏ ‎суть ‎и‏ ‎решение ‎этой ‎задачи.


Ну, ‎это ‎всё‏ ‎актуально, ‎если‏ ‎вам‏ ‎действительно ‎хочется ‎разобраться‏ ‎и ‎научиться.

Через‏ ‎сотню-другую ‎задач ‎вы ‎начнёте‏ ‎замечать‏ ‎повторяющиеся ‎модели‏ ‎/ ‎структуры‏ ‎задач, ‎и ‎будет ‎легче.


Предыдущий

Все посты проекта
0 комментариев

Статистика

Метки

Подарить подписку

Будет создан код, который позволит адресату получить бесплатный для него доступ на определённый уровень подписки.

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

Будет создан код, который позволит адресату получить сумму на баланс.

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

Добавить карту
0/2048