Saltar al contenido

Coartadas cruzadas

Enunciado

"Una sola lista, y en orden", pide la inspectora Ríos. Dos agentes siguieron al sospechoso y cada uno anotó, de menor a mayor, las horas en que lo vio. Las libretas son larguísimas y ya vienen en orden: volver a ordenar todo sería tirar ese trabajo.

Escribe una función que reciba primera y segunda, dos listas de enteros ordenadas de menor a mayor (915 son las 9:15), y regrese una lista nueva con todas las horas de las dos, en orden. Recórrelas a la vez, con un índice en cada una: compara las dos horas que te tocan, pasa la menor a la lista nueva y avanza solo en esa lista. Cuando una se acaba, copia lo que quede de la otra. Sin sorted ni .sort().

Las horas repetidas se quedan todas, en la misma lista o entre las dos. Cualquiera de las listas, o las dos, puede venir vacía.

Por ejemplo, con [800, 930, 1100] y [845, 930, 1500] regresas [800, 845, 930, 930, 1100, 1500].

Ejemplos

  • El del ejemplo

    [800, 930, 1100], [845, 930, 1500] → [800, 845, 930, 930, 1100, 1500]

  • Varias seguidas de la misma

    [100, 400, 700, 2300], [200, 300, 500, 600, 800] → [100, 200, 300, 400, 500, 600, 700, 800, 2300]

  • La primera viene vacía

    [], [700, 1200] → [700, 1200]

  • La primera se acaba pronto

    [600], [700, 800, 900, 1000, 1100] → [600, 700, 800, 900, 1000, 1100]

  • Repetidos en las dos

    [900, 900, 1000], [900, 1000] → [900, 900, 900, 1000, 1000]

Además de estas, el reto tiene pruebas ocultas que se revelan al enviar tu solución.

Empiezas con esto

Python

def junta_horas(primera, segunda):
    pass

JavaScript

function juntaHoras(primera, segunda) {
}
Resolver este reto

Se abre en el navegador, con el editor y las pruebas. Este reto es del plan completo; los de O(1) y O(log n) son gratis.

Más retos de O(n)

Ver todos los retos →