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
| class Solution { public int islandPerimeter(int[][] grid) { int m = grid.length, n = grid[0].length;
for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { if (grid[i][j] == 1) { return dfs(grid, m, n, i, j); } } }
return 0; }
private int dfs(int[][] grid, int m, int n, int i, int j) { if (i < 0 || i >= m || j < 0 || j >= n || grid[i][j] == 0) { return 1; } if (grid[i][j] == 2) { return 0; }
grid[i][j] = 2;
return dfs(grid, m, n, i, j + 1) + dfs(grid, m, n, i, j - 1) + dfs(grid, m, n, i + 1, j) + dfs(grid, m, n, i - 1, j); } }
|