Estou postando sobre as minhas respostas aos desafios do HackerRank como forma de melhorar meu aprendizado, reforçar meu conhecimento e estabelecer uma compreensão dos conceitos abordados. Se eu ajudar alguém compartilhando ao longo do caminho, melhor ainda!
Left Rotation é um dos desafios de "Arrays" com a dificuldade 'EASY'.
Uma operação de rotação à esquerda em uma matriz desloca cada elemento da matriz para a esquerda. Por exemplo, se duas rotações à esquerda forem realizadas na matriz [1, 2, 3, 4, 5]
, a matriz se tornará [3, 4, 5, 1, 2]
.
Dada uma matriz a
de n
números inteiros e um número, d
, de rotações a esquerda na matriz. Retorne o array atualizado para ser impresso como uma única linha de inteiros separados por espaços.
Uma função que retorne uma matriz de inteiros após as rotações esquerdas terem sido realizadas.
1 <= n <= 10 ^ 5
1 <= d <= n
1 <= a [i] <= 10 ^ 6
1 2 3 4 5
4
5 1 2 3 4
function leftRotation (a , d ) {
return a .concat (a .splice (0 , d ));
}
Toda a lógica está contida nesta única linha, mas podemos dividi-la em três partes:
Primeiro usei .splice()
para obter os primeiros d
itens no array a[0 - d]
. No ínicio do desafio é informado o seguinte limite que define esta lógica 1 <= d <= n
, ou seja, não preciso me preocupar em girar a matriz para a esquerda mais vezes que os itens na matriz.
Em seguida, usei .concat()
para concatenar (ou mesclar) o que resta de a
, ou tudo depois de a[d]
, com o que separei no primeiro passo a[0 - d]
.
E então, finalizo a função retornando essa matriz recém-organizada.
Outras línguas que eu falo
def leftRotation (a , d )
a .rotate (d )
end
def leftRotation (a , d ):
return a [a : ] + a [: a ]
func leftRotation (a [] int32 , d int32 ) []int32 {
return append (a [d : ], a [: d ]... )
}
def leftRotation (a : Array [Int ], d : Int ): Array [Int ] = {
return a .drop (d )++ a .take (d );
}
static int leftRotation (int [] a , int d ) {
int [] rotated = new int [a .length ];
for (int i = 0 ; i < a .length ; i++ ) {
rotated[(i + a .length - d ) % a .length ] = a [i];
}
return rotated;
}
function leftRotation ($a , $d ) {
return array_merge (array_splice ($a , $d , count ($a )), array_splice ($a , 0 , $d ));
}
Pensamento: O que não provoca minha morte faz com que eu fique mais forte.