Patrones Comunes de Arreglos 2D
Parte de la sección Lógica y Flujo del Journey de Java de Coddy — lección 8 de 59.
Ciertos patrones suelen aparecer al trabajar con arreglos 2D. Reconocer estos patrones puede ayudarte a resolver problemas de manera más eficiente. Aquí hay algunos patrones comunes:
Recorrido Diagonal
Accediendo a los elementos donde el índice de fila es igual al índice de columna (matrix[i][i]) obtienes la diagonal principal. Para la antidiagonal, la suma de los índices de fila y columna es igual al tamaño del array menos 1 (matrix[i][size - 1 - i]).
Por ejemplo:
1 2 3
4 5 6
7 8 9Recorrer la diagonal principal (matrix[i][i]): 1, 5, 9
Recorrer la antidiagonal (matrix[i][size - 1 - i]): 3, 5, 7
Recorrido del Borde
Para recorrer los elementos del borde, mantienes un índice constante (0 o size - 1) mientras iteras sobre el otro.
Para acceder al borde superior, iteras sobre las columnas con el índice de fila fijo en 0.
Por ejemplo:
1 2 3 4
5 6 7 8
9 10 11 12elementos de borde: 1, 2, 3, 4, 8, 12, 11, 10, 9, 5 (todos excepto 6 y 7)
Desafío
FácilCrea un método llamado printPatterns que tome un arreglo 2D cuadrado de enteros (matrix) como entrada e imprima los siguientes patrones:
- Diagonal Principal: Imprime todos los elementos donde el índice de fila es igual al índice de columna.
- Anti-Diagonal: Imprime todos los elementos donde la suma de los índices de fila y columna es igual al tamaño de la matriz menos 1.
- Bordes: Imprime los elementos de los bordes superior, inferior, izquierdo y derecho de la matriz.
La salida debería verse así:
Main Diagonal: 1 6 11 16
Anti-Diagonal: 4 7 10 13
Top Border: 1 2 3 4
Bottom Border: 13 14 15 16
Left Border: 1 5 9 13
Right Border: 4 8 12 16Hoja de referencia
Patrones comunes de recorrido de matrices 2D:
Recorrido Diagonal
Diagonal principal: matrix[i][i] (índice de fila igual al índice de columna)
Anti-diagonal: matrix[i][size - 1 - i] (suma de los índices de fila y columna igual a size - 1)
1 2 3
4 5 6
7 8 9Diagonal principal: 1, 5, 9
Anti-diagonal: 3, 5, 7
Recorrido de Borde
Mantenga un índice constante (0 o size - 1) mientras itera sobre el otro:
- Borde superior: row = 0, iterate columns
- Borde inferior: row = size - 1, iterate columns
- Borde izquierdo: column = 0, iterate rows
- Borde derecho: column = size - 1, iterate rows
Pruébalo tú mismo
// Escribe tu código solo dentro de la clase. No escribas main() ni ningún código fuera de esta clase.
class PrintPatterns {
public static void printPatterns(int[][] matrix) {
// Escribe tu código aquí
}
}Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Lógica y Flujo
1Arreglos Multidimensionales
Básicos de Arreglos 2DAccediendo a Elementos de Arreglos 2DBucles Anidados con Arreglos 2DResumen - Arreglos 2DSuma y Resta de MatricesArreglos IrregularesArreglos 3D y Más AlláPatrones Comunes de Arreglos 2DResumen - Todo Sobre Arreglos4HashSet Parte 1
¿Qué es un HashSet?Agregando un elementoEliminando un elementoComprobando si existe un elementoVacío y tamañoLimpiar y clonarResumen - HashSet7Manejo Básico de Errores
Básicos de Try-CatchBloque FinallyLanzamiento de ExcepcionesExcepciones Personalizadas2HashMap Parte 1
¿Qué es un HashMap?Declarar un HashMapAcceder a ValoresVerificar si una Clave ExisteModificar DiccionariosResumen - HashMap3HashMap Parte 2
Métodos de HashMapIterar con keySet()Iterar con entrySet()HashMap AnidadoResumen - Gestionar AlmacénResumen - Operaciones de HashMap6Flujo de Control Avanzado
Sentencias EtiquetadasExpresión SwitchCoincidencia de PatronesCláusulas de GuardiaResumen - Flujo de Control9Proyecto - Contador de Palabras Únicas
Entrada y Almacenamiento de TextoProcesamiento de Palabras