0Pricing
Competitive Programming Academy · Lección

Dos punteros en un array ordenado

Mueva los extremos hacia el centro hasta alcanzar el objetivo

Dos punteros en un array ordenado es una lección gratuita de Competitive Programming Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Competitive Programming Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Competitive Programming Academy incluye 4 lecciones en total.

Por qué usar dos punteros

La técnica de los dos punteros recorre un arreglo con dos índices en lugar de usar bucles anidados, y convierte muchas ideas O(n^2) en un único recorrido limpio O(n). 🎯

La palabra mágica es ordenado

La versión clásica necesita un arreglo ordenado. El orden permite razonar: avanzar hacia la derecha aumenta el valor y avanzar hacia la izquierda lo reduce, así que cada paso es una decisión real.

Dos punteros en los extremos

Coloque un puntero en el extremo izquierdo y otro en el extremo derecho. Se enfrentan y cerrarán poco a poco la distancia entre ellos.

left = 0
right = len(a) - 1

Mueva los extremos hacia dentro

En cada paso, mueva exactamente un puntero hacia dentro. El orden del arreglo le indica qué lado debe mover para acercarse a su objetivo.

La condición del bucle

Siga iterando mientras left < right. Cuando se encuentren o se crucen, ya habrá comprobado todos los pares útiles y podrá detenerse.

while left < right:
    # inspect a[left] and a[right]
    pass

Leer la suma actual

Considere a[left] + a[right] como su candidato actual. Compararlo con un objetivo le indica si después necesita un valor mayor o menor.

total = a[left] + a[right]

Demasiado pequeño: mueva el puntero izquierdo

Si la suma está por debajo del objetivo, necesita más. Mueva el puntero izquierdo hacia la derecha, en dirección a valores mayores, ya que el arreglo está ordenado de forma ascendente.

if total < target:
    left += 1

Demasiado grande: mueva el puntero derecho

Si la suma está por encima del objetivo, necesita menos. Mueva el puntero derecho hacia la izquierda, en dirección a valores menores, para reducir el total.

elif total > target:
    right -= 1

Cada paso descarta trabajo

Cada movimiento elimina todo un conjunto de pares que ya no necesita comprobar. Por eso el recorrido es lineal en lugar de cuadrático.

Por qué sigue siendo correcto

Solo descarta pares que no pueden coincidir, por lo que nunca omite la respuesta correcta. Esta seguridad hace que los dos punteros sean fiables en los concursos.

Más allá de los extremos

La misma idea permite resolver variantes: invertir en el propio arreglo, particionar y fusionar. Cuando domine los punteros que se encuentran, todas le resultarán familiares.

Comprobación rápida

Está recorriendo un arreglo ordenado desde ambos extremos para encontrar una suma objetivo.

Repaso

Dos punteros recorren un arreglo ordenado desde ambos extremos y mueven uno hacia dentro en cada paso mientras left < right. Es un método lineal y correcto, y sirve de base para muchos trucos. 🚀

Preguntas frecuentes

¿La lección «Dos punteros en un array ordenado» es gratis?

Sí — el texto completo de «Dos punteros en un array ordenado» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Competitive Programming Academy, actualiza a CoddyKit PRO. El curso de Competitive Programming Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Dos punteros en un array ordenado»?

Mueva los extremos hacia el centro hasta alcanzar el objetivo Practicas Competitive Programming Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Competitive Programming Academy?

No se requiere experiencia previa. Competitive Programming Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.

¿Cuánto tiempo toma la lección «Dos punteros en un array ordenado»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Competitive Programming Academy?

Sí. Cada lección de Competitive Programming Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Dos punteros en un array ordenado
  2. Encuentre un par con una suma dada
  3. Elimine duplicados en el propio array
  4. Combine dos secuencias ordenadas
← Volver a Competitive Programming Academy