Use two pointers when problems involve sorted arrays, pairs, windows, or palindromes. Start pointers strategically, then move based on a deterministic rule to shrink search space in linear time.
Sample implementation for sorted two-sum with left/right pointers.
function twoSumSorted(nums: number[], target: number): number[] {
let left = 0;
let right = nums.length - 1;
while (left < right) {
const sum = nums[left] + nums[right];
if (sum === target) return [left, right];
if (sum < target) left++;
else right--;
}
return [];
}