Las balizas que faltan
- O(log n) · Fácil
- Gratis
- Python
- JavaScript
- listas
- búsqueda
- índices
Enunciado
Nicanor es balicero: pone las balizas que marcan el canal navegable del río, numeradas desde la 1 hacia río abajo. La lista de las que ya están puestas llega ordenada de menor a mayor y sin repetidos, pero con huecos: hay números que nunca se pusieron.
Nicanor va a pedir hierro para una sola, y te dice cuál quiere: la k-ésima que falta, contando los huecos de menor a mayor a partir del número 1.
Recibes la lista de balizas puestas y el número k, y regresas el número de esa baliza. Con 2, 3, 4, 7 y 11 puestas, los números que faltan son 1, 5, 6, 8, 9, 10, 12 y así, entonces la quinta que falta es la 9.
Los números no se acaban donde termina la lista, porque el río sigue: todo número mayor que la última baliza puesta también es un hueco y también cuenta. Con 1, 2 y 3 puestas no falta nada entre ellas, así que los huecos son 4, 5, 6 y así, y la segunda que falta es la 5. Si no hay ninguna baliza puesta, la k-ésima que falta es k.
k siempre es 1 o más. Hay tramos de río con hasta 60 balizas puestas. Idea: párate en un renglón cualquiera de la lista y saca la cuenta de lo que falta antes de él. Si ahí está la baliza 11 y es la quinta puesta, entonces entre el 1 y el 11 faltan 6 números. Esa cuenta nunca baja cuando avanzas por la lista, así que puedes partirla por mitades y buscar el primer renglón donde la cuenta ya llegó a k. Ese renglón te dice cuántas balizas puestas quedan antes de tu hueco, y de ahí sale el número: del 1 hasta tu hueco cada número es una puesta o un hueco, y ya sabes cuántos hay de cada uno.
Ejemplos
El ejemplo
[2, 3, 4, 7, 11], 5 → 9
Sin huecos, la que sigue
[1, 2, 3], 2 → 5
Ninguna baliza puesta
[], 3 → 3
La primera libre es la 1
[2], 1 → 1
Todo seguido desde el 1
[1, 2, 3], 1 → 4
Además de estas, el reto tiene pruebas ocultas que se revelan al enviar tu solución.
Empiezas con esto
Python
def baliza_libre(puestas, k):
passJavaScript
function balizaLibre(puestas, k) {
}Se abre en el navegador, con el editor y las pruebas. Es gratis y no hace falta cuenta para empezar.
Más retos de O(log n)
- Las capturas del mismo pesolistas · búsqueda · índices
- Las compuertas del canaldiccionarios · búsqueda · listas
- Las parcelas cuadradasdivisión · búsqueda · operaciones
- Las sacas que se acumulanoperaciones · búsqueda · ciclos
- Los barcos de abastodivisión · búsqueda · ciclos
- Los casilleros ocupadosdivisión · dígitos · ciclos