¿Cómo puedo reducir la complejidad de un algoritmo? Actualmente estoy haciendo hackerrank, donde hice una solución para escalar en la tabla de clasificación, pero dos pruebas están fallando debido al límite de tiempo.
Estoy tratando de aprender cómo refactorizar mi código, con menos complejidad de tiempo, pero no tengo idea de cómo podría reducir los dos bucles for en uno, porque tengo que recorrer ambas matrices para verificar si el puntaje del jugador es superior o igual a la tabla de clasificación clasificada.
La descripción de la tarea:https://www.hackerrank.com/challenges/climbing-the-leaderboard/
Podría buscar una solución para esto, pero quiero saber cómo puedo reducir la complejidad del tiempo en los códigos que escribo, ¿cómo debería ser mi forma de pensar cuando intento hacer esto?
function climbingLeaderboard(ranked, player) { let positions = []; let temp = new Set(...[ranked]); ranked = Array.from(temp); for(let i = 0; i < player.length; i++) { for(let j = 0; j < ranked.length; j++) { if(player[i] > ranked[j] || player[i] === ranked[j]) { positions.push(j+1); break; } else if(j === ranked.length-1) { positions.push(j+2); break; } } } return positions; }