DEV Community

Altencir Junior
Altencir Junior

Posted on

Resolvendo problemas no HackerRank: Quebrando Recordes

Saudações. Hoje enfrentaremos mais um problema,veremos como fazer uma análise de pontuação com base nas temporadas, e retornar quantas vezes o record foi ultrapassado e quantas vezes, houve menor pontuação. No exercício nos é passado algumas regras a serem seguidas para que sua conclusão seja correta, vejamos:

Breaking Records -

  • Lista de pontos
  • Manter uma contagem de valor Max e Min
  • return quantidade de vezes que o recorde for quebrado, seja maior pontuação ou menor pontuação

Sabendo assim todas as regras do exercício, temos que saber agora sobre um molde. Com o que se foi passado antes, o exercício nos pede o seguinte resultado:

10
3 4 21 36 10 28 35 5 24 42
//contagem de maior e menor recorde: 4 0
Enter fullscreen mode Exit fullscreen mode

Com todas as exigências postas,façamos o que se pede:

function breakingRecords(scores) {
// Write your code here
let firstScore = scores[0];
let maxScore = [firstScore], minScore = [firstScore];

for(let i = 1; i < scores.length; i++){
  if (scores[i] > Math.max(...maxScore)) maxScore.push(scores[i]);
  if (scores[i] < Math.min(...minScore)) minScore.push(scores[i]);
}
return [maxScore.length - 1, minScore.length - 1];
Enter fullscreen mode Exit fullscreen mode

}


Nesta função comparamos cada elemento da matriz de "scores" (pontuações) guardado nos parâmetros, com os elementos anteriores e armazena os recordes máximos e mínimos. A variável "firstScore" é inicializada com o primeiro elemento da matriz e as variáveis "maxScore" e "minScore" são inicializadas com o valor de "firstScore". 

A iteração começa no segundo elemento da matriz e verifica se cada elemento é maior ou menor que o dado anteriormente armazenado, caso seja, o elemento é armazenado na variável "maxScore" ou "minScore", dependendo do caso.

Ao final da iteração, são retornados os tamanhos das variáveis "maxScore" e "minScore", que correspondem às vezes que os recordes foram quebrados.

O resultado de todo esse procedimento será:

Enter fullscreen mode Exit fullscreen mode

10
3 4 21 36 10 28 35 5 24 42
4 0


**Soluções Alternativas -**

Enter fullscreen mode Exit fullscreen mode

function breakingRecords(scores) {
let high=scores[0],low=scores[0],highCount=0,lowCount=0
scores.map(function(element){
if(element > high){
high = element
highCount++
}
if(element < low){
low = element
lowCount++
}
})
return [highCount,lowCount]
}



No caso acima, ao invés de utilizar `for` ele utiliza a função `.map` que irá percorrer a operação e adicionar um novo valor alterado no que estava antes.

Com isso,finalizamos mais um desafio. Te aguardo no próximo Resolvendo problemas no HackerRank!!

Enter fullscreen mode Exit fullscreen mode

Oldest comments (0)