Rotar Imagen - LeetCode #48 Top Interview 11/150
1 min
Introducción
Rotar una matriz cuadrada 90° en sentido horario es un clásico de entrevistas y algoritmos. La clave está en hacerlo in-place, es decir, sin usar memoria adicional. En este post, desglosamos el patrón de solución, visualizamos el proceso y analizamos su eficiencia.
Enunciado
Dada una matriz cuadrada
n x n, rota la matriz 90 grados en sentido horario in-place (sin crear otra matriz).
Ejemplo:
Antes:
1 2 3
4 5 6
7 8 9Después:
7 4 1
8 5 2
9 6 3Estrategia: Transponer y Revertir
- Transponer la matriz: Intercambia filas por columnas.
- Invertir cada fila: Reversa cada fila para completar la rotación.
¿Por qué funciona?
- La transposición convierte filas en columnas.
- Invertir cada fila reubica los elementos en la posición correcta para la rotación de 90°.
Implementación Paso a Paso
function rotate(matrix) {
const n = matrix.length
// Transponer
for (let i = 0; i < n; i++) {
for (let j = i + 1; j < n; j++) {
[matrix[i][j], matrix[j][i]] = [matrix[j][i], matrix[i][j]]
}
}
// Invertir filas
for (let i = 0; i < n; i++) {
matrix[i].reverse()
}
}Análisis de Complejidad
- Tiempo: (dos recorridos completos)
- Espacio: (in-place, sin memoria extra)
Reflexiones y Aprendizajes
- El patrón transponer + invertir es útil para rotaciones y manipulación de matrices.
- Manipular in-place es clave para optimizar espacio.
- Visualizar el movimiento ayuda a entender el algoritmo.