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.
PHP
<?php // A PHP program to move all // zeroes at the end of array // Function which pushes all // zeros to end of an array. function pushZerosToEnd(&$arr, $n) { // Count of non-zero elements $count = 0; // Traverse the array. If // element encountered is // non-zero, then replace // the element at index // 'count' with this element for ($i = 0; $i < $n; $i++) if ($arr[$i] != 0) // here count is incremented $arr[$count++] = $arr[$i]; // 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; } // Driver Code $arr = array(1, 9, 8, 4, 0, 0, 2, 7, 0, 6, 0, 9); $n = sizeof($arr); pushZerosToEnd($arr, $n); echo "Array after pushing all " . "zeros to end of array : "; for ($i = 0; $i < $n; $i++) echo $arr[$i] . " "; // This code is contributed // by ChitraNayal ?>
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