classSolution { publicintislandPerimeter(int[][] grid) { intm= grid.length, n = grid[0].length;
for (inti=0; i < m; i++) { for (intj=0; j < n; j++) { if (grid[i][j] == 1) { return dfs(grid, m, n, i, j); } } }
return0; }
privateintdfs(int[][] grid, int m, int n, int i, int j) { if (i < 0 || i >= m || j < 0 || j >= n || grid[i][j] == 0) { return1; } if (grid[i][j] == 2) { return0; }
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); } }