투포인터

양끝 또는 같은 방향으로 두 인덱스를 움직여 O(n)에 가깝게 좁힙니다.

← 원리 목록 · 배우기에서 자세히

언제

정렬·회문·쌍 합·구간을 한 번 훑으며 좁힐 때.

양끝

let L = 0, R = a.length - 1;
while (L < R) {
  const s = a[L] + a[R];
  if (s === target) return true;
  if (s < target) L++;
  else R--;
}

같은 방향

느린/빠른 포인터, 또는 왼쪽을 고정하고 오른쪽만 전진.

함정

정렬 전제인지, 중복 처리, L < R vs L <= R.

한 줄

> 정렬·단조 성질이 있으면 투포인터 후보.

배우기에서 더 읽기

관련 문제