Number of Closed Islands LeetCode solution in Java
1class Solution {2boolean isClosed = true;34public int closedIsland(int[][] grid) {5int m = grid.length;6int n = grid[0].length;7int count = 0;89for (int i = 1; i < m - 1; i++) {10for (int j = 1; j < n - 1; j++) {11isClosed = true;12if (grid[i][j] == 0) {13dfs(grid, i, j);1415if (isClosed) {16count++;17}18}19}20}2122return count;23}2425public void dfs(int[][] grid, int i, int j) {26if (i < 0 || j < 0 || i > grid.length - 1 || j > grid[0].length - 1 || grid[i][j] != 0) return;2728grid[i][j] = 1; // to mark as visited2930if (i == 0 || j == 0 || i == grid.length - 1 || j == grid[0].length - 1) isClosed = false;3132dfs(grid, i, j + 1);33dfs(grid, i, j - 1);34dfs(grid, i + 1, j);35dfs(grid, i - 1, j);36}37}