Je publie mes solutions aux défis HackerRank afin d'améliorer mon apprentissage, de renforcer mes connaissances et d'établir une compréhension des concepts abordés. Si j'aide quelqu'un en partageant en cours de route, c'est encore mieux!
Left Rotation est l'un des défis initiaux avec une difficulté 'EASY'.
Une opération de rotation à gauche sur une matrice décale chaque élément de la matrice vers la gauche. Par exemple, si deux rotations à gauche sont effectuées sur la matrice [1, 2, 3, 4, 5]
, le matrice devient [3, 4, 5, 1, 2]
.
Étant donné una matrice a
de n
entiers et un nombre, d
, de rotations à gauche dans la matrice. Renvoie la matrice mis à jour à imprimer sous la forme d'une seule ligne d'entiers séparés par des espaces.
Une fonction qui renvoie una matrice d'entiers après que les rotations à gauche ont été effectuées.
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 ));
}
Toute la logique est contenue dans cette seule ligne, mais nous pouvons la diviser en trois parties:
J'ai d'abord utilisé .splice()
pour obtenir les premiers éléments d
dans le tableau a[0 - d]
. Au début du défi, la limite suivante est informée qui définit cette logique 1 <= d <= n
, c'est-à-dire que je n'ai pas à me soucier de la rotation de la matrice pour la gauche plus de fois que les éléments de la matrice.
J'ai ensuite utilisé .concat()
pour concaténer (ou fusionner) ce qui reste de a
, ou tout ce qui suit a[d]
, avec ce que j'ai séparés dans la première étape a[0 - d]
.
Et puis je termine la fonction en retournant le matrice nouvellement trié.
Autres langues que je parle
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 ));
}
Pensée: La mesure de l’amour, c’est d’aimer sans mesure