Elimine duplicados en el propio array
Use un par de punteros, uno lento y otro rápido
Elimine duplicados en el propio array es una lección gratuita de Competitive Programming Academy en CoddyKit. Esta es la lección 3 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.
Eliminar duplicados in situ
Dado un arreglo ordenado, conserve una copia de cada valor sin usar otro arreglo. Hacerlo in situ ahorra memoria y es una pregunta clásica de las entrevistas. 🧹
Por qué ayuda que esté ordenado
Cuando el arreglo está ordenado, cada duplicado se encuentra justo al lado de su equivalente. Por eso solo necesita comparar vecinos, nunca todo el arreglo.
Dos funciones, dos punteros
Use un puntero slow que marque el último valor conservado y un puntero fast que recorra el arreglo buscando algo nuevo.
slow = 0
fast = 1El puntero slow escribe
Considere slow como la posición de escritura: todo lo que está en esa posición o antes ya está limpio y es único.
El puntero fast lee
El puntero fast solo lee hacia delante. Avanza rápidamente y solo avisa a slow cuando encuentra un valor que aún no se ha conservado.
Omita las repeticiones
Si a[fast] es igual a a[slow], es una repetición, así que no haga nada salvo avanzar fast. El duplicado se omite discretamente.
for fast in range(1, n):
if a[fast] == a[slow]:
continueHa encontrado algo nuevo
Cuando a[fast] es diferente, avance slow y copie allí el nuevo valor. Así sobrescribe los duplicados antiguos con datos únicos nuevos.
else:
slow += 1
a[slow] = a[fast]La respuesta es la longitud
Después del recorrido, slow + 1 es la cantidad de valores únicos, todos agrupados al principio del arreglo.
return slow + 1Ignore la parte final
Todo lo que quede después del prefijo único son datos sobrantes. El problema solo considera los primeros elementos slow + 1, así que deje intacta la parte final.
Tenga en cuenta el arreglo vacío
Un arreglo vacío tiene cero valores únicos. Compruebe n == 0 antes de comenzar para no leer más allá del final.
if n == 0:
return 0Un recorrido, sin espacio adicional
Este patrón de punteros slow y fast se ejecuta en tiempo O(n) y usa O(1) de espacio adicional, exactamente lo que exigen los límites de memoria estrictos.
Comprobación rápida
Está eliminando duplicados in situ en un arreglo ordenado con punteros slow y fast.
Repaso
En un arreglo ordenado, un par de punteros lento-rápido elimina los duplicados en un recorrido O(n) sin espacio adicional y devuelve slow + 1 como cantidad de valores únicos. 🎉
Preguntas frecuentes
¿La lección «Elimine duplicados en el propio array» es gratis?
Sí — el texto completo de «Elimine duplicados en el propio array» 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 «Elimine duplicados en el propio array»?
Use un par de punteros, uno lento y otro rápido 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 3 de 4.
¿Cuánto tiempo toma la lección «Elimine duplicados en el propio array»?
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
- Dos punteros en un array ordenado
- Encuentre un par con una suma dada
- Elimine duplicados en el propio array
- Combine dos secuencias ordenadas