Explication: une opération de rotation gauche sur une matrice de taille N chacun des éléments de la matrice 1 unité à gauche. Par exemple, si 2 Les rotations de gauche sont effectuées sur le tableau [1,2,3,4,5], puis le tableau deviendrait [3,4,5,1,2]. p>
Compte tenu d'un tableau de N entiers et d'un numéro, D, effectuez des rotations de gauche sur le tableau. Puis imprimez le tableau mis à jour comme une seule ligne de entiers séparés par l'espace. P>
format d'entrée p>
La première ligne contient deux entiers séparés par l'espace indiquant le valeurs respectives de N (le nombre d'entiers) et D (le nombre de Rotations de gauche que vous devez effectuer). La deuxième ligne contient n entiers séparés par l'espace décrivant les éléments respectifs de la l'état initial de tableau. Contraintes p>
import math import os import random import re import sys def rotLeft(a, d): for i in range(d): temp=a[0] for i in range(len(a)-1): a[i]=a[i+1] a[n-1]=temp return a if __name__ == '__main__': fptr = open(os.environ['OUTPUT_PATH'], 'w') nd = input().split() n = int(nd[0]) d = int(nd[1]) a = list(map(int, input().rstrip().split())) result = rotLeft(a, d) fptr.write(' '.join(map(str, result))) fptr.write('\n') fptr.close()
7 Réponses :
Ceci est un problème, alors vous donner la solution exacte est pire que inutile. Au lieu de cela, essayez de déplacer la façon dont vous y réfléchissez. Regardez à nouveau les exigences. Vous n'avez pas nécessairement besoin de stocker l'ensemble des numéros; Vous pouvez simplement aller sur la liste, stocker uniquement ce que vous devez écrire à la fin, écrire le reste immédiatement après les avoir lu. Qui sera plus rapide et utilise beaucoup moins de mémoire. P>
Vous êtes une brute forçant trop la solution qui rend l'exécution très lente. Je ne vous dirai pas les solutions exactes mais quelques conseils de la tête: p>
def rotLeft(a, d): for i in range(d): removed = a.pop(0) a.append(removed) return a problem solved by using pop and append in-built functions
Hackerrank Tous les cas de test ont passé: Essayez d'utiliser ce code @glibDud très simple pour comprendre et éviter l'erreur TLE (Erreur limite de temps)
# Complete the rotLeft function below. def rotLeft(a, d): new = [] for i in range(len(a),0,-1): new.append(a[d-i]) return new
def rotate_left(arr, rot): if len(arr) == 0: return ' ' res = [] arr.reverse() while rot > 0: res.append(arr.pop()) rot -= 1 arr.reverse() arr = arr+res return ' '.join(map(str, arr))
Pouvez-vous Modifier Votre question pour expliquer comment ce code exemple répond à la question?
#!/bin/python3 import math import os import random import re import sys def leftrotation(arraysize, rotation, array): rotation = rotation % arraysize temp2 = [] temp1 = array[0:rotation] temp2 = array[rotation:] word = ' '.join(map(str, temp2+temp1)) print(word) if __name__ == '__main__': nd = input().split() n = int(nd[0]) d = int(nd[1]) a = list(map(int, input().rstrip().split())) leftrotation(n, d, a)
Cette question peut être facilement résolue à l'aide de la tranchée:
def array_left_rotation(arr, d): return arr[d:]+arr[:d]