Все истории

👆 Как понять, что задача решается через два указателя

Копия публикации из архива канала. Дата и текст сохранены.

Есть одна ситуация, в которую попадает почти каждый новичок.
Получаешь задачу.
Начинаешь писать два вложенных цикла.
Потом третий.
Потом смотришь на код и понимаешь, что он уже страшнее самой задачи. 😄

Именно в этот момент стоит задуматься: а не подходит ли здесь метод двух указателей?

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

Например:
🔹 найти пару чисел с нужной суммой;
🔹 удалить дубликаты;
🔹 развернуть массив;
🔹 проверить палиндром;
🔹 найти самый длинный подходящий отрезок.

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

Если ловите себя на мысли: «Я снова прохожу этот массив полностью...» — скорее всего, есть решение быстрее.

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

Так что в следующий раз, прежде чем писать очередной вложенный цикл, остановитесь на секунду и спросите себя:
«А нельзя ли решить это двумя указателями?»

Иногда этот вопрос экономит не только десятки строк кода, но и несколько баллов на техническом интервью. 🚀

👇 А вы уже сталкивались с задачами на два указателя или пока этот алгоритм кажется магией?