1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| class Solution {
public int numIslands(char[][] grid) { boolean[][] visited = new boolean[grid.length][grid[0].length]; int ans = 0; for (int i = 0; i < grid.length; i++) { for (int j = 0; j < grid[0].length; j++) { if (grid[i][j] == '1'&& !visited[i][j]) { dfs(i, j, grid, visited); ans++; } } }
return ans; }
private void dfs(int x, int y, char[][] grid, boolean[][] visited) { if (!inBounds(x, y, grid) || visited[x][y] || grid[x][y] != '1') return ; visited[x][y] = true; dfs(x+1, y, grid, visited); dfs(x-1, y, grid, visited); dfs(x, y-1, grid, visited); dfs(x, y+1, grid, visited); }
private boolean inBounds(int x, int y, char[][] matrix) { return x >= 0 && x < matrix.length && y >= 0 && y < matrix[0].length; } }
|