DEV Community

Altencir Junior
Altencir Junior

Posted on

Resolvendo problemas no HackerRank: Uma rotação de array circular

Olá, seja bem vindo a mais um Resolvendo problemas no HackerRank: no problema precisamos construir um array giratório que pega o último elemento e o retorna ao início do array, e fará isso por um determinado número de vezes. Vejamos agora.

Circular Array Rotation

Neste desafio mental fictício criado, John Watson conhece uma operação chamada rotação circular reta em uma matriz de números inteiros. Uma operação de rotação move o último elemento da matriz para a primeira posição e desloca todos os elementos restantes para a direita. Para testar as habilidades de Sherlock, Watson fornece a Sherlock uma matriz de números inteiros. Sherlock deve executar a operação de rotação várias vezes e determinar o valor do elemento em uma determinada posição.

Para cada array, execute um número de rotações circulares à direita e retorne os valores dos elementos nos índices fornecidos.

  • a =[3,4,5] //array
  • k=2 // número de rotações em a
  • queries=[1,2]// lista de indices a relatar.

Vejamos a execução deste código:

function circularArrayRotation(a, k, queries) {
    // Write your code here
  for(let i=0; i<k; i++) {
    let lastElement = a.pop()
    a.unshift(lastElement)
  }
  return queries.map(q => a[q]);
}
Enter fullscreen mode Exit fullscreen mode

A função tem os parâmetros antes descritos( a,k e queries). Criamos um laço de repetição que irá iterar com base no número de rotações destinadas a k.

Declaramos uma variável lastElementque pegará o último valor de ae trocar pela primeira posição. Depois disso retornamos o queriescom um map. retornando uma nova listagem.

O resultado será:

3 2 3
1 2 3
0
1
2

//input abaixo
2
3
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)