DEV Community

Altencir Junior
Altencir Junior

Posted on

Resolvendo problemas no HackerRank: Saltando em nuvens (2)

Olá, seja bem vindo a mais um Resolvendo problemas no HackerRank: No caso de hoje,vamos jogar um jogo de pular nuvens parecido ao que fizemos a algum tempo atrás. Vejamos mais informações com a explicação detalhada e sua resolução.

jumpingOnClouds -

Há um novo jogo para celular que começa com nuvens numeradas consecutivamente. Algumas das nuvens são trovoadas e outras são cúmulos. O jogador pode pular em qualquer nuvem cumulus com um número igual ao número da nuvem atual mais 1 ou 2.

O jogador deve evitar as trovoadas. Determine o número mínimo de saltos necessários para pular da posição inicial até a última nuvem. É sempre possível ganhar o jogo:

  • Para cada jogo, você receberá uma série de nuvens numeradas 0 e se for seguro ou 1, deve evitá-la

  • int c[n]: um array

  • RETURN = int: o número mínimo de saltos necessários

Vejamos a execução

function jumpingOnClouds(c) {
    // Write your code here
  let arrCumulus = [];
  for(let i=0; i < c.length; i++) {
    if(c[i] === 0) {
      arrCumulus.push(i);
    }
  }
  for(let i=0; i < arrCumulus.length-2; i++) {
    if(arrCumulus[i+2]-arrCumulus[i] === 2) {
      arrCumulus.splice(i+1, 1);
    }
  }
  return arrCumulus.length-1;
}
Enter fullscreen mode Exit fullscreen mode

O código acima é uma função chamada jumpingOnClouds que recebe um array chamado c como parâmetro. A função tem como objetivo determinar o número mínimo de pulos necessários para chegar ao final do array, seguindo algumas regras.

O primeiro passo da função é criar um novo array chamado arrCumulus que irá armazenar os índices dos elementos do array c que são iguais a 0. Isso é feito através de um laço for que percorre todo o array c. Se o elemento atual for igual a 0, seu índice é adicionado ao final do array arrCumulus.

Em seguida, a função utiliza um segundo laço for que percorre todo o array arrCumulus, com exceção dos dois últimos elementos. Para cada elemento do array arrCumulus (exceto os dois últimos), é verificado se a distância entre o elemento atual e o elemento dois índices à frente é igual a 2. Se for o caso, o elemento seguinte ao elemento atual é removido do array arrCumulus.

Por fim, a função retorna o comprimento do array arrCumulus menos um, que é o número mínimo de pulos necessários para chegar ao final do array c.

Em resumo, a função jumpingOnClouds determina o número mínimo de pulos necessários para chegar ao final do array c, considerando que o jogador pode pular apenas entre elementos iguais a 0 e pode pular no máximo dois elementos à frente.

O resultado será:

7
0 0 1 0 0 1 0

input: 4
Enter fullscreen mode Exit fullscreen mode

Assim, concluímos mais um Resolvendo problemas no HackerRank:até a próxima.

Top comments (0)