Programa Python3 para mover todos los ceros al final de la array – Part 1

Dada una array de números aleatorios, Empuje todos los ceros de una array dada al final de la array. Por ejemplo, si las arrays dadas son {1, 9, 8, 4, 0, 0, 2, 7, 0, 6, 0}, debe cambiarse a {1, 9, 8, 4, 2, 7, 6, 0, 0, 0, 0}. El orden de todos los demás elementos debe ser el mismo. La complejidad de tiempo esperada es O(n) y el espacio adicional es O(1).
Ejemplo: 
 

Input :  arr[] = {1, 2, 0, 4, 3, 0, 5, 0};
Output : arr[] = {1, 2, 4, 3, 5, 0, 0};

Input : arr[]  = {1, 2, 0, 0, 0, 3, 6};
Output : arr[] = {1, 2, 3, 6, 0, 0, 0};

Puede haber muchas maneras de resolver este problema. A continuación se muestra una forma sencilla e interesante de resolver este problema. 
Recorre la array dada ‘arr’ de izquierda a derecha. Durante el recorrido, mantenga el conteo de elementos distintos de cero en la array. Que el conteo sea ‘contar’. Para cada elemento distinto de cero arr[i], coloque el elemento en ‘arr[count]’ e incremente ‘count’. Después de completar el recorrido, todos los elementos distintos de cero ya se han desplazado al frente y ‘contar’ se establece como índice del primer 0. Ahora todo lo que tenemos que hacer es ejecutar un ciclo que hace que todos los elementos sean cero desde ‘contar’ hasta el final de la array
A continuación se muestra la implementación del enfoque anterior. 
 

Python3

# Python3 code to move all zeroes
# at the end of array
  
# Function which pushes all
# zeros to end of an array.
def pushZerosToEnd(arr, n):
    count = 0 # Count of non-zero elements
      
    # Traverse the array. If element 
    # encountered is non-zero, then
    # replace the element at index
    # 'count' with this element
    for i in range(n):
        if arr[i] != 0:
              
            # here count is incremented
            arr[count] = arr[i]
            count+=1
      
    # Now all non-zero elements have been
    # shifted to front and 'count' is set
    # as index of first 0. Make all 
    # elements 0 from count to end.
    while count < n:
        arr[count] = 0
        count += 1
          
# Driver code
arr = [1, 9, 8, 4, 0, 0, 2, 7, 0, 6, 0, 9]
n = len(arr)
pushZerosToEnd(arr, n)
print("Array after pushing all zeros to end of array:")
print(arr)
  
# This code is contributed by "Abhishek Sharma 44"

Producción: 
 

Array after pushing all zeros to end of array :
1 9 8 4 2 7 6 9 0 0 0 0

Complejidad de tiempo: O (n) donde n es el número de elementos en la array de entrada.
Espacio Auxiliar: O(1)
 

Consulte el artículo completo sobre Mover todos los ceros al final de la array para obtener más detalles.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *