Однажды мне задали этот вопрос на Quora. Мой ответ получил 17.7k просмотров и много голосов. Человеку, задавшему вопрос, требовался определенный путь обучения и ресурсы. Когда я привык заниматься соревновательным программированием и изучать алгоритмы, я выполнил несколько шагов, чтобы изучить алгоритмы. Эти шаги мне больше всего подошли. Возможно, эти шаги могут быть полезны и для вас. Итак, здесь я делюсь своими шагами обучения -

Чтение книги очень важно, потому что каждая тема подробно описана в книге, но в видео / учебных пособиях все описано кратко.

Для книг я рекомендую -
1: Введение в алгоритмы: Чарльз Э. Лейзерсон, Клиффорд Штайн, Рональд Ривест и Томас Х. Кормен
2: Алгоритмы ( 4-е издание): Роберт Седжвик, Кевин Уэйн
3: Руководство по разработке алгоритмов: Стивен Скиена

Некоторые интернет-ресурсы:
Учебники по науке о данных
Алгоритмы - GeeksforGeeks

Ресурсы для практики:
1: http://lightoj.com/volume_problemcategory.php
2: Мир семи - методы решения
3 : A2 Online Judge
4: HackerRank
5: CodeForces

Теперь переходим к шагам:
Я следую философии обучения на практике.

Шаг 1. Сначала вы должны изучить теорию какого-либо конкретного алгоритма из своих книг / ресурсов.

Шаг 2. Постарайтесь воплотить алгоритм (теорию), который вы изучили, в код, не глядя на реализацию других. После долгих попыток, если вы не можете реализовать, обратитесь за помощью к другим.

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

Для меня это лучший способ изучить алгоритмы.

Удачи. :)

Эта статья также была размещена в моем личном блоге.