题目链接:https://leetcode.com/problems/number-of-islands/
要求计算0-1矩阵中的孤岛1数目。举个例子,在某个位置(i,j)board[i][j]=1,则与它(邻接)连通的“1”都被算作同一片岛屿,这里可以使用深度优先搜索将与之连通的‘1’位置全部访问一遍,直到岛屿周围都是‘0’;当然要计算岛屿的个数就要检查所有格点(二重循环),另外属于某个岛屿的格点再也不会属于另外一个岛屿,所以可以将其置‘0’避免重复访问,当然也可以用一个二维数组存储访问情况避免重复访问。
class Solution {
public static int rows=0;
public static int cols=0;
public static void DFS(char[][] board,int i,int j)
{
if(i<0 || i>=rows || j<0 || j>=cols)
return;
board[i][j]='0';
DFS(board,i+1,j);
DFS(board,i-1,j);
DFS(board,i,j-1);
DFS(board,i,j+1);
}
public int numIslands(char[][] board) {
rows=board.length;
if(rows==0) return 0;
cols=board[0].length;
int count=0;
for(int i=0;i<rows;i++)
for(int j=0;j<cols;j++)
{
if(board[i][j]=='1')
{
DFS(board,i,j);
count++;
}
}
return count;
}
}