diff --git a/solution/0200-0299/0200.Number of Islands/README.md b/solution/0200-0299/0200.Number of Islands/README.md index 634d42f1eb971..87e54186056f9 100644 --- a/solution/0200-0299/0200.Number of Islands/README.md +++ b/solution/0200-0299/0200.Number of Islands/README.md @@ -208,20 +208,19 @@ function numIslands(grid: string[][]): number { const m = grid.length; const n = grid[0].length; let ans = 0; - function dfs(i, j) { - grid[i][j] = '0'; - const dirs = [-1, 0, 1, 0, -1]; - for (let k = 0; k < 4; ++k) { - const x = i + dirs[k]; - const y = j + dirs[k + 1]; - if (x >= 0 && x < m && y >= 0 && y < n && grid[x][y] == '1') { - dfs(x, y); - } + const dfs = (i: number, j: number) => { + if (grid[i]?.[j] !== '1') { + return; } - } + grid[i][j] = '0'; + dfs(i + 1, j); + dfs(i - 1, j); + dfs(i, j + 1); + dfs(i, j - 1); + }; for (let i = 0; i < m; ++i) { for (let j = 0; j < n; ++j) { - if (grid[i][j] == '1') { + if (grid[i][j] === '1') { dfs(i, j); ++ans; } diff --git a/solution/0200-0299/0200.Number of Islands/README_EN.md b/solution/0200-0299/0200.Number of Islands/README_EN.md index e2efa41f09937..6af18eb748ddf 100644 --- a/solution/0200-0299/0200.Number of Islands/README_EN.md +++ b/solution/0200-0299/0200.Number of Islands/README_EN.md @@ -198,20 +198,19 @@ function numIslands(grid: string[][]): number { const m = grid.length; const n = grid[0].length; let ans = 0; - function dfs(i, j) { - grid[i][j] = '0'; - const dirs = [-1, 0, 1, 0, -1]; - for (let k = 0; k < 4; ++k) { - const x = i + dirs[k]; - const y = j + dirs[k + 1]; - if (x >= 0 && x < m && y >= 0 && y < n && grid[x][y] == '1') { - dfs(x, y); - } + const dfs = (i: number, j: number) => { + if (grid[i]?.[j] !== '1') { + return; } - } + grid[i][j] = '0'; + dfs(i + 1, j); + dfs(i - 1, j); + dfs(i, j + 1); + dfs(i, j - 1); + }; for (let i = 0; i < m; ++i) { for (let j = 0; j < n; ++j) { - if (grid[i][j] == '1') { + if (grid[i][j] === '1') { dfs(i, j); ++ans; } diff --git a/solution/0200-0299/0200.Number of Islands/Solution.ts b/solution/0200-0299/0200.Number of Islands/Solution.ts index b398e93559c7b..8ac5367be98ac 100644 --- a/solution/0200-0299/0200.Number of Islands/Solution.ts +++ b/solution/0200-0299/0200.Number of Islands/Solution.ts @@ -2,20 +2,19 @@ function numIslands(grid: string[][]): number { const m = grid.length; const n = grid[0].length; let ans = 0; - function dfs(i, j) { - grid[i][j] = '0'; - const dirs = [-1, 0, 1, 0, -1]; - for (let k = 0; k < 4; ++k) { - const x = i + dirs[k]; - const y = j + dirs[k + 1]; - if (x >= 0 && x < m && y >= 0 && y < n && grid[x][y] == '1') { - dfs(x, y); - } + const dfs = (i: number, j: number) => { + if (grid[i]?.[j] !== '1') { + return; } - } + grid[i][j] = '0'; + dfs(i + 1, j); + dfs(i - 1, j); + dfs(i, j + 1); + dfs(i, j - 1); + }; for (let i = 0; i < m; ++i) { for (let j = 0; j < n; ++j) { - if (grid[i][j] == '1') { + if (grid[i][j] === '1') { dfs(i, j); ++ans; }