foundation

Два указателя

Используйте сходящиеся или однонаправленные указатели, когда порядок заменяет вложенные циклы одним проходом.

Two pointers заменяют nested scans, когда правила движения исключают невозможных candidates. Pointers могут сходиться с концов, двигаться с разной скоростью или поддерживать write position при чтении. Pattern лучше всего работает с sorted arrays, linked list cycles, partitioning и in-place compaction.

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

На интервью: Интервьюеры слушают invariant, который делает безопасным сдвиг одного pointer вместо перебора каждой пары.

Типовые ошибки: Не используйте pattern, если порядок input не поддерживает elimination. Осторожно обрабатывайте duplicates, equality cases и момент движения pointer до или после обработки.

Чеклист:

  • Назовите elimination rule.
  • Обработайте equality.
  • Двигайте pointers монотонно.
  • Проверьте inputs с большим числом duplicates.