Suppose, I want to create a 2D array of the following structure:
[0, 1, 1, 1]
[1, 0, 0, 0]
[1, 0, 0, 0]
For achieving my goal, at first, I created a 2D array with initial values of 0:
function createGrid(m: number, n: number): number {
let grid: number[][] = new Array(m).fill(0).map(() => new Array(n).fill(0));
return 0;
};
Then, I changed the values of the first row (except grid[0][0]) to 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;
};
Similarly, I tried to change the values of the first column (except grid[0][0]) to 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;
};
But, it throws the following error:
grid[i] is undefined
Can someone please explain what I’m missing here?
TypeScript Playground Code Link
>Solution :
There is two errors:
- You swapped
mandnwhen you wanted to fill with1. - You created overflow with condition
i <=, you neededi <.
Corrected version:
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);
Result:
[[0, 1, 1, 1],
[1, 0, 0, 0],
[1, 0, 0, 0]]