La banda más poblada
- O(n log n) · Difícil
- Plan completo
- Python
- JavaScript
- ordenar
- listas
- índices
Enunciado
La antena de la base Kepler solo escucha una banda a la vez, y la banda tiene un ancho fijo. Quieres apuntarla donde caigan más naves.
Escribe una función que reciba frecuencias, una lista de enteros positivos (una por nave; puede venir vacía y puede haber repetidas), y ancho, un entero de 0 en adelante. Regresa un entero: cuántas naves, como máximo, caben juntas en una banda, es decir, en un grupo donde la frecuencia mayor menos la menor da ancho o menos. Las repetidas cuentan cada una, y el borde entra: una diferencia igual a ancho sí cabe.
Con 101, 98, 105, 99, 120, 104 y 103 y ancho 5, la banda de 99 a 104 atrapa 99, 101, 103 y 104: son 4, y ninguna banda atrapa 5.
Con una sola nave la respuesta es 1; sin naves, 0.
Ejemplos
El del ejemplo
[101, 98, 105, 99, 120, 104, 103], 5 → 4
El borde entra
[10, 13, 16], 3 → 2
Repetidas con ancho 0
[50, 50, 50, 52], 0 → 3
La mejor banda va al final
[88, 90, 91, 95, 96, 97, 98], 4 → 4
Una sola nave
[7], 0 → 1
Además de estas, el reto tiene pruebas ocultas que se revelan al enviar tu solución.
Empiezas con esto
Python
def banda(frecuencias, ancho):
passJavaScript
function banda(frecuencias, ancho) {
}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.