岛屿的个数number-of-islands
2015-12-01 23:07
253 查看
给一个01矩阵,求不同的岛屿的个数。
0代表海,1代表岛,如果两个1相邻,那么这两个1属于同一个岛。我们只考虑上下左右为相邻。
样例
在矩阵:
中有
解题思路:对于这种图论的题来说,(づ。◕‿‿◕。)づ宝宝真的是不会,所以我百度学习了一下。不看不知道,一看还是挺简单的,最简单的DFS
0代表海,1代表岛,如果两个1相邻,那么这两个1属于同一个岛。我们只考虑上下左右为相邻。
样例
在矩阵:
[ [1, 1, 0, 0, 0], [0, 1, 0, 0, 1], [0, 0, 0, 1, 1], [0, 0, 0, 0, 0], [0, 0, 0, 0, 1] ]
中有
3个岛.
解题思路:对于这种图论的题来说,(づ。◕‿‿◕。)づ宝宝真的是不会,所以我百度学习了一下。不看不知道,一看还是挺简单的,最简单的DFS
public class Solution { /** * @param grid a boolean 2D matrix * @return an integer */ public void dfs(boolean[][] grid, int x , int y){ if(x<0||x>grid.length-1){ return; } if(y<0||y>grid[0].length-1){ return; } if(!grid[x][y]){ return; } grid[x][y]=false; dfs(grid,x+1,y); dfs(grid,x-1,y); dfs(grid,x,y+1); dfs(grid,x,y-1); } public int numIslands(boolean[][] grid) { // Write your code here if(grid.length ==0 || grid[0].length==0 || grid == null ) return 0; int n=grid.length; int m=grid[0].length; int count=0; for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ if(grid[i][j]){ dfs(grid,i,j); count++; } } } return count; } }
相关文章推荐
- 如何在Windows 10桌面显示我的电脑和控制面板等系统图标
- 104、Maximum Depth of Binary Tree
- runtime之Associated Objects
- Git for windows安装出错的解决办法
- 为什么你一定要有本科文凭?
- 聚簇索引概念
- 如何愉快地写代码
- VirtualBox中安装的Fedora Server与windows系统共享文件夹的方法
- Xcode快捷键汇总
- haproxy+keepalived实现高可用负载均衡
- Web APi之异常处理(Exception)以及日志记录(NLog)(十六)
- mylist
- Windows下IIS+PHP 5.2的安装与配置
- awk之变量篇
- 推荐!手把手教你使用Git
- Android第三方FloatingActionButton:伴随ListView、RecyclerView、ScrollView滚动滑入滑出
- PHP的一些小细节
- 【NetApp】磁盘固件更新
- mysql 创建用户删除用户增加用户权限
- 2. wordpress 友情链接的备份和导入