leetcode200_岛屿的个数

给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。

示例 1:

输入:
11110
11010
11000
00000

输出: 1
示例 2:

输入:
11000
11000
00100
00011

输出: 3

 

思路:

从每个‘1‘开始dfs遍历  把所有能从当前‘1’到达的‘1’变为0  这一片为1个岛屿

public int numIslands(char[][] grid) {
	    int count=0;
	    for(int i=0;i<grid.length;i++)
	        for(int j=0;j<grid[0].length;j++){
	            if(grid[i][j]=='1'){
	                dfsFill(grid,i,j);
	                count++;
	            }
	        }
	    return count;
	}
	
	//遍历的时候  把所有能从当前‘1’到达的‘1’变为0
	private void dfsFill(char[][] grid,int i, int j){
	    if(i>=0 && j>=0 && i<grid.length && j<grid[0].length&&grid[i][j]=='1'){
	        grid[i][j]='0';
	        dfsFill(grid, i + 1, j);
	        dfsFill(grid, i - 1, j);
	        dfsFill(grid, i, j + 1);
	        dfsFill(grid, i, j - 1);
	    }
	}

 

全部评论

相关推荐

04-02 16:49
门头沟学院 Java
_bloodstream_:我也面了科大讯飞,主管面的时候听说急招人优先考虑能尽快实习的,我说忙毕设,后面就一直没消息了
点赞 评论 收藏
分享
永不遗忘:才这么点算什么拉黑,我初筛连着挂几十次了,最后还是能进面
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务