Bir işaretçi listenin başına, biri sonuna konur ve birbirlerine doğru yürürler. Her adımda yalnızca biri hareket eder; hangisinin hareket edeceğine o anki duruma bakarak karar verirsin.
lo, hi = 0, len(values) - 1while lo < hi:total = values[lo] + values[hi]if total == key:return Trueif total < key:lo += 1else:hi -= 1return False
Palindrom kontrolü de aynı yürüyüştür: iki uçtaki elemanlar eşit mi, eşitse ikisi de bir adım içeri. Ortada buluştuklarında bitmiştir.