Two Pointers

Beginner

Tecnica che utilizza due puntatori per attraversare array o liste, riducendo la complessità temporale.

Pattern: Two Pointers

Il pattern Two Pointers è uno dei più comuni nelle coding interview. Consiste nell'usare due indici per scorrere una struttura dati (di solito un array o una stringa), spesso per ottimizzare la soluzione a problemi che altrimenti richiederebbero approcci più lenti come il brute force.

🚀 Quando usarlo

Utilizza i due puntatori quando:

  • Vuoi trovare una coppia o una somma all'interno di un array ordinato
  • Devi muoverti da due estremi verso il centro (o viceversa)
  • Vuoi manipolare array in-place (es. rimozione duplicati)
  • Cerchi sottostringhe o sottosequenze valide con determinate proprietà

🧰 Tipi principali di Two Pointers

TipoDescrizione
OppostiUn puntatore inizia all'inizio e l'altro alla fine
Avanzamento singoloEntrambi iniziano da sinistra, il secondo segue il primo
Sliding Window ibridoUno si muove lentamente, l'altro espande la finestra

✏️ Esempio classico: Somma di due numeri ordinati

Leetcode 167. Two Sum II - Input Array Is Sorted

def twoSum(numbers, target): left, right = 0, len(numbers) - 1 while left < right: s = numbers[left] + numbers[right] if s == target: return [left + 1, right + 1] elif s < target: left += 1 else: right -= 1

✅ Complessità:

  • Tempo: O(n)
  • Spazio: O(1)

🧩 Problemi comuni

NomeDifficoltàPatternLink
Two Sum IIEasyOppostiLeetcode #167
Reverse StringEasyOppostiLeetcode #344
Move ZeroesEasyAvanzamento singoloLeetcode #283
Valid PalindromeEasyOppostiLeetcode #125
Container With Most WaterMediumOppostiLeetcode #11

💡 Consigli utili

  • Se l’array è ordinato, prova sempre prima con il pattern due puntatori.
  • Quando si tratta di subarray, valuta se è meglio Sliding Window.
  • Occhio agli indici: molti errori derivano da confusione tra left, right e condizioni di uscita.

📚 Continua con

👉 Sliding Window →

Unisciti al Viaggio

Ricevi tips settimanali, nuovi pattern e aggiornamenti esclusivi per migliorare costantemente le tue skills algoritmiche

No spam, unsubscribe anytime. Privacy policy compliant.