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

 

全部评论

相关推荐

程序员花海:实习和校招简历正确格式应该是教育背景+实习+项目经历+个人评价 其中项目经历注意要体现业务 实习经历里面的业务更是要自圆其说 简历模板尽可能保持干净整洁 不要太花哨的
点赞 评论 收藏
分享
11-05 10:55
中南大学 Java
要双修的猫头鹰:这面试官怕不是个m
我来点评面试官
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务