0Pricing
Competitive Programming Academy · Lección

Colas y collections.deque

Inserte y extraiga rápidamente por ambos extremos

Colas y collections.deque 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.

El primero en entrar es el primero en salir

Una cola atiende los elementos en el orden en que llegaron, como una fila en una tienda. El primero en entrar es el primero en salir.

Por qué no usar una lista

Una lista puede eliminar elementos del principio, pero pop(0) cuesta O(n) porque todos los demás elementos se desplazan a la izquierda. Esto es demasiado lento para entradas grandes.

q = []
q.pop(0)  # O(n), avoid this

Conocer collections.deque

La deque de collections es una cola de doble extremo que añade y elimina elementos por ambos extremos en O(1). Es la opción habitual en concursos.

from collections import deque
q = deque()

Encolar al final

Añada elementos nuevos al extremo derecho con append, exactamente igual que en una lista. Este es el final de la cola.

q.append(1)
q.append(2)

Desencolar desde el principio

Elimine el elemento más antiguo por la izquierda con popleft, que se ejecuta en tiempo constante y proporciona un comportamiento FIFO real.

first = q.popleft()  # returns 1

Ambos extremos están disponibles

Una deque también admite appendleft y pop por la derecha. Esta flexibilidad permite que una misma estructura funcione como pila o como cola.

q.appendleft(0)
last = q.pop()

Comprobar antes de eliminar

Eliminar elementos de una deque vacía produce un error, así que compruebe while q en los bucles para mantener seguro el recorrido.

while q:
    x = q.popleft()

Las colas impulsan BFS

El uso más habitual en concursos es BFS. Encole un nodo inicial y después siga extrayendo el primero y añadiendo sus vecinos.

Una pequeña estructura de BFS

Este bucle visita los nodos capa por capa. Cada vecino se añade y se procesa más adelante en el orden de llegada.

while q:
    node = q.popleft()
    for nb in graph[node]:
        q.append(nb)

Limitar el tamaño de la deque

Indicar maxlen hace que una deque descarte el elemento más antiguo cuando está llena, algo perfecto para ventanas deslizantes y para conservar el historial reciente.

window = deque(maxlen=3)

Una estructura, muchas funciones

Recuerde que una deque es rápida en ambos extremos, así que utilícela siempre que necesite una cola, una pila o un búfer deslizante.

Comprobación rápida

Necesita eliminar rápidamente elementos del principio de una cola. ¿Qué opción es la adecuada?

Resumen: deque es la cola rápida

Ha conocido collections.deque: append y popleft para obtener un comportamiento FIFO en O(1), acceso por ambos extremos y maxlen para ventanas. Es la base de BFS. 🎯

Preguntas frecuentes

¿La lección «Colas y collections.deque» es gratis?

Sí — el texto completo de «Colas y collections.deque» 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 «Colas y collections.deque»?

Inserte y extraiga rápidamente por ambos extremos 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 «Colas y collections.deque»?

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. Pilas para emparejar corchetes
  2. Pila monótona: siguiente elemento mayor
  3. Colas y collections.deque
  4. Máximo de ventana deslizante con deque
← Volver a Competitive Programming Academy