Olá, seja bem vindo a mais um Resolvendo problemas no HackerRank: no problema de hoje, teremos um placar com diversas posições, e devemos criar uma forma de mostrar em ordem decrescente as posições.
Climbing the LeaderBoard -
O problema no dá os seguintes parâmetros de problemas:
O jogador com a pontuação mais alta é o número classificado na tabela de classificação.
Jogadores com pontuações iguais recebem o mesmo número de classificação e o(s) próximo(s) jogador(es) recebem o número de classificação imediatamente seguinte.
int rankeado[n]: as pontuações da tabela de classificação
int player[m]: a pontuação do jogador
int[m]: a classificação do jogador após cada nova pontuação
Vejamos um exemplo:
ranked [100,90,90,80]
players [70,80,105]
A classificação de ranked será: 1,2,2 e 3. Se os players tem 70, 80 e 105, logo será um return =[ 4,3 e 1]
Vejamos o código e como ele é feito:
function climbingLeaderboard(ranked, player) {
// Write your code here
const uniqueRanks = [...new Set(ranked)];
return player.map(score => {
while (uniqueRanks.length > 0 && score >= uniqueRanks [uniqueRanks.length - 1]) {
uniqueRanks.pop();
}
return uniqueRanks.length + 1;
});
}
A função começa criando uma nova variável "uniqueRank", que contém um array único e ordenado das pontuações dos jogadores classificados. Depois fazemos o retorno de parâmetro player utilizando map que irá iterar o parâmetro.
O player.map
irá passar um parâmetro score dentro da nova iteração, que enquanto o comprimemnto do novo array uniqueRank
for maior que 0 e menor ou igual a score, ele deve trazer o comprimento menos 1 e depois retirar o último elemento do array retornado.
Finalizando, nós retornamos o comprimento de uniqueRank
+ 1
O resultado será:
7
100 100 50 40 40 20 10
4
5 25 50 120
////
6
4
2
1
Com isso, concluímos mais um desafio do Resolvendo problemas no HackerRank: . Até a próxima.
Top comments (0)