Полевой справочник
Два указателя (с концов)
O(n)Два индекса стартуют по краям отсортированного массива и идут навстречу, на каждом шаге решая, какую сторону подвинуть.
Сигналы
отсортированный массив (или можно отсортировать)найти пару/тройку с заданной суммойсжать с обоих концов (контейнер, площадь)проверка палиндрома
Шаблон
function twoPointers(arr, target) {
let lo = 0;
let hi = arr.length - 1;
while (lo < hi) {
const sum = arr[lo] + arr[hi];
if (sum === target) return [lo, hi];
if (sum < target) lo++;
else hi--;
}
return null;
}Похоже, но не то
- Скользящее окно: Окно держит непрерывный отрезок и растит/сужает его по условию. Указатели с концов сходятся к одному ответу (пара, площадь) и никакой отрезок не хранят.
- Хеш-множество / словарь: Хеш ищет дополнение в неотсортированных данных за O(n) времени, но O(n) памяти. Два указателя берут, когда массив отсортирован и важна O(1) память.
n до 1e5..1e6 и массив отсортирован -> O(n): один линейный проход, каждый указатель делает не больше n шагов. O(1) доп. память.
Изучить этот паттерн