Dada una array 2D, la tarea es imprimir la array en forma antiespiral:
Ejemplos:
Salida: 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
Input : arr[][4] = {1, 2, 3, 4 5, 6, 7, 8 9, 10, 11, 12 13, 14, 15, 16}; Output : 10 11 7 6 5 9 13 14 15 16 12 8 4 3 2 1 Input :arr[][6] = {1, 2, 3, 4, 5, 6 7, 8, 9, 10, 11, 12 13, 14, 15, 16, 17, 18}; Output : 11 10 9 8 7 13 14 15 16 17 18 12 6 5 4 3 2 1
La idea es simple, atravesamos la array en forma de espiral y colocamos todos los elementos atravesados en una pila. Finalmente, uno por uno los elementos de la pila e imprímalos.
Javascript
<script> // Javascript Code for Print matrix in antispiral form function antiSpiralTraversal(m,n,a) { let i, k = 0, l = 0; /* k - starting row index m - ending row index l - starting column index n - ending column index i - iterator */ let stk=[]; while (k <= m && l <= n) { /* Print the first row from the remaining rows */ for (i = l; i <= n; ++i) stk.push(a[k][i]); k++; /* Print the last column from the remaining columns */ for (i = k; i <= m; ++i) stk.push(a[i][n]); n--; /* Print the last row from the remaining rows */ if ( k <= m) { for (i = n; i >= l; --i) stk.push(a[m][i]); m--; } /* Print the first column from the remaining columns */ if (l <= n) { for (i = m; i >= k; --i) stk.push(a[i][l]); l++; } } while (stk.length!=0) { document.write(stk[stk.length-1] + " "); stk.pop(); } } /* Driver program to test above function */ let mat = [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15], [16, 17, 18, 19, 20]]; antiSpiralTraversal(mat.length - 1, mat[0].length - 1, mat); // This code is contributed by avanitrachhadiya2155 </script>
Producción:
12 13 14 9 8 7 6 11 16 17 18 19 20 15 10 5 4 3 2 1
Complejidad de tiempo : O (m * n) donde m es el número de filas y n es el número de columnas de una array dada
Consulte el artículo completo sobre Array de impresión en forma antiespiral 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