public class Solution {
    private int count = 0;

    public int numIslands(char[][] grid) {

        if (grid.length<1 || grid[0].length<1){
            return 0;
        }

        for (int i=0; i<grid.length; i++){
            for (int j=0; j<grid[0].length; j++){
                if (grid[i][j] == '1'){
                    helper(grid, i, j);
                    count++;
                } 
            }
        }

        return count;

    }

    private void helper(char[][] grid, int i,int j) {

        if (grid[i][j]=='1'){
            grid[i][j] = '0';
            //down
            if ((i+1)<grid.length && grid[i+1][j]=='1') {
                helper(grid, i+1, j);
            }
            //right
            if ((j+1)<grid[0].length && grid[i][j+1]=='1') {
                helper(grid, i, j+1);
            }
            //up
            if ((i-1)>=0 && grid[i-1][j]=='1') {
                helper(grid, i-1, j);
            }
            //left
            if ((j-1)>=0 && grid[i][j-1]=='1') {
                helper(grid, i, j-1);
            }
        } else {
            return;
        }



    }
}

results matching ""

    No results matching ""