Метод двух указателей

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

Динамическое программирование. Основы (Перевод с английского)

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