0
votes

Tableaux à gauche rotation | Fissuration du classement de codage de l'entretien de codage - (résilié en raison de la période de temps)

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()

0 commentaires

7 Réponses :


0
votes

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.


0 commentaires

2
votes

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:

  1. Réduisez le nombre d'opérations de gauche (indice: Pensez à l'opération MOD)
  2. Les éléments de la matrice ne changent pas de position arbitraire. Ils ne changent que par un d quantité de fois. Essayez de penser à un moyen de profiter de ces informations sans utiliser de boucles imbriquées.

0 commentaires

4
votes
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

0 commentaires

0
votes

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


0 commentaires

0
votes
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))

1 commentaires

Pouvez-vous Modifier Votre question pour expliquer comment ce code exemple répond à la question?



0
votes
#!/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)

0 commentaires

2
votes

Cette question peut être facilement résolue à l'aide de la tranchée:

def array_left_rotation(arr, d):
    return arr[d:]+arr[:d]


0 commentaires