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

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

Я против структур данных и алгоритмов

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

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

Они не просто изучают DSA и переходят к другим вещам, а затем приходят позже и все равно все помнят. Что ж, это неудивительно; это относится практически ко всему. Чтобы применить то же самое, я использую так называемое интервальное повторение, когда вы многократно изучаете сложные концепции, пока они не закрепятся.

Как я изучаю структуры данных и алгоритмы

Вот мой подход к изучению DSA:

1.Выделяйте час в день

Обычно я изучаю DSA первым делом с утра (после завтрака и обычных приготовлений, конечно).

2. Просматривая то, что я узнал вчера утром, первым делом

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

3. Интервальное повторение

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

Пока я очень доволен результатами. Наконец-то я научился решать проблемы, связанные с DSA.

Ресурсы

Вот список ресурсов, которые я сейчас использую:

  1. Cracking The Coding Interview Гейл Лаакманн Макдауэлл. В этой книге есть большой раздел, посвященный Big O. Кроме того, в ней рассказывается о различных структурах данных, которые вы найдете в интервью.
  2. Плейлист алгоритмов JavaScript — Codevolution/YouTube
  3. Плейлист структур данных JavaScript — Codevolution/YouTube
  4. Neetcode — структурированный способ решения основных вопросов Leetcode (с видеорешениями (на Python) и кодом, написанным на нескольких языках программирования, таких как JavaScript, Java, Python и C++)

Заметили опечатку, ошибку или дополнительную информацию, которой стоит поделиться? Комментарий ниже. Мне бы хотелось услышать ваше мнение.