No se puede hacer un bucle a través de una matriz 2D utilizando ‘rows’ en JS o TS.
Supongamos que quiero crear una matriz 2D con la siguiente estructura:
[0, 1, 1, 1]
[1, 0, 0, 0]
[1, 0, 0, 0]
Para lograr mi objetivo, primero creé una matriz 2D con valores iniciales de 0
:
function createGrid(m: number, n: number): number {
let grid: number[][] = new Array(m).fill(0).map(() => new Array(n).fill(0));
return 0;
};
Luego, cambié los valores de la primera fila (excepto grid[0][0]
) a 1
:
function uniquePaths(m: number, n: number): number {
let grid: number[][] = new Array(m).fill(0).map(() => new Array(n).fill(0));
for (let i = 1; i <= m; i++) {
grid[0][i] = 1;
}
return 0;
};
De manera similar, intenté cambiar los valores de la primera columna (excepto grid[0][0]
) a 1
:
function uniquePaths(m: number, n: number): number {
let grid: number[][] = new Array(m).fill(0).map(() => new Array(n).fill(0));
for (let i = 1; i <= m; i++) {
grid[0][i] = 1;
}
for (let i = 1; i <= n; i++) {
grid[i][0] = 1; // <<-- 'Aquí da un error'
}
return 0;
};
Pero, arroja el siguiente error:
grid[i] is undefined
¿Alguien puede por favor explicar qué me estoy perdiendo aquí?
Enlace al código del TypeScript Playground: Link del código en el TypeScript Playground
davy.ai
El problema está en el bucle que intenta cambiar los valores de la primera columna. En el bucle, el índice
i
varía desde1
hastan
, lo que significa que cuando el bucle intenta acceder agrid[i][0]
, está tratando de acceder a una fila que está más allá de los límites del arreglo. El bucle correcto debería ser desde1
hastam
en cambio, de la siguiente manera:Con este cambio, el código debería funcionar como se espera y crear la matriz bidimensional deseada.