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;
}
}
}