LeetCode--200. Number of Islands

题目链接: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;
    }
}

猜你喜欢

转载自blog.csdn.net/To_be_to_thought/article/details/84498110