DEV Community

Altencir Junior
Altencir Junior

Posted on

Resolvendo problemas no HackerRank: Posições ranqueadas

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;
    });
}
Enter fullscreen mode Exit fullscreen mode

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 uniqueRankfor 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
Enter fullscreen mode Exit fullscreen mode

Com isso, concluímos mais um desafio do Resolvendo problemas no HackerRank: . Até a próxima.

Top comments (0)