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)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Discover a treasure trove of wisdom within this insightful piece, highly respected in the nurturing DEV Community enviroment. Developers, whether novice or expert, are encouraged to participate and add to our shared knowledge basin.

A simple "thank you" can illuminate someone's day. Express your appreciation in the comments section!

On DEV, sharing ideas smoothens our journey and strengthens our community ties. Learn something useful? Offering a quick thanks to the author is deeply appreciated.

Okay