Supongamos que quiero crear una matriz 2D de la siguiente estructura:
[0, 1, 1, 1] [1, 0, 0, 0] [1, 0, 0, 0] Para lograr mi objetivo, al principio, 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; }; Del mismo modo, traté de 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; // <<-- 'Throws error here` } return 0; };Pero arroja el siguiente error:
grid[i] is undefined¿Alguien puede explicar lo que me estoy perdiendo aquí?
Hay dos errores:
m y n cuando querías llenar con 1 .i <= , necesitabas i < .Versión corregida:
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 < n; i++) { grid[0][i] = 1; } for (let i = 1; i < m; i++) { grid[i][0] = 1; } console.log(grid); return 0; }; uniquePaths(3, 4);Resultado:
[[0, 1, 1, 1], [1, 0, 0, 0], [1, 0, 0, 0]]Puede verificar los índices y verificar el valor lógico no y devolver un número del cheque.
function createGrid(m, n) { return Array.from( { length: m }, (_, i) => Array.from( { length: n }, (_, j) => +(!i !== !j) ) ); }; createGrid(3, 4).map(a => console.log(...a))