El más votado y el menos votado
- O(n log n) · Difícil
- Plan completo
- Python
- JavaScript
- listas
- ordenar
- ciclos
Enunciado
En la votación del salón cada voto es el número de un candidato. La lista 1, 1, 2, 2, 7, 8, 4, 5, 1 y 4 son diez votos: el 1 se llevó tres, el 2 y el 4 dos cada uno, y el 5, el 7 y el 8 uno cada uno.
Escribe una función que reciba la lista de votos y regrese la diferencia entre los votos del más votado y los del menos votado. En el ejemplo de arriba son 3 menos 1, así que regresas 2.
Las reglas: solo cuentan los candidatos que recibieron al menos un voto.
Si todos quedaron empatados, la diferencia es 0. Con la lista vacía también regresas 0.
Contar cada voto contra todos los demás funciona, pero hay un camino más corto: ordena los votos y los de un mismo candidato quedan juntos, así que te basta recorrer la lista una vez midiendo qué tan largo es cada grupo.
Ejemplos
Diez votos
[1, 1, 2, 2, 7, 8, 4, 5, 1, 4] → 2
Uno se lleva cuatro
[1, 7, 9, 2, 3, 3, 1, 3, 3] → 3
Empate
[1, 2, 1, 2] → 0
El más votado al final
[4, 4, 9, 9, 9] → 1
Además de estas, el reto tiene pruebas ocultas que se revelan al enviar tu solución.
Empiezas con esto
Python
def diferencia_de_votos(votos):
passJavaScript
function diferenciaDeVotos(votos) {
}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.