Trzymasz dwa wskaźniki/indeksy (np. lewy/prawy) i przesuwasz je wg reguły, często na posortowanej tablicy lub w oknie przesuwnym. W wielu zadaniach pozwala zejść z dwóch pętli do O(n).
function hasPairSum(arr: number[], target: number) {
let l = 0;
let r = arr.length - 1;
while (l < r) {
const sum = arr[l] + arr[r];
if (sum === target) return true;
if (sum < target) l++;
else r--;
}
return false;
}