码迷,mamicode.com
首页 > 其他好文 > 详细

岛屿的个数number-of-islands

时间:2015-12-02 00:57:46      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:

给一个01矩阵,求不同的岛屿的个数。

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

 1 public class Solution {
 2     /**
 3      * @param grid a boolean 2D matrix
 4      * @return an integer
 5      */
 6     public void dfs(boolean[][] grid, int x , int y){
 7         if(x<0||x>grid.length-1){
 8             return;
 9         }
10         if(y<0||y>grid[0].length-1){
11             return;
12         }
13         if(!grid[x][y]){
14             return;
15         }
16         grid[x][y]=false;
17         dfs(grid,x+1,y);
18         dfs(grid,x-1,y);
19         dfs(grid,x,y+1);
20         dfs(grid,x,y-1);
21     }
22     public int numIslands(boolean[][] grid) {
23         // Write your code here
24         if(grid.length ==0 || grid[0].length==0 || grid == null )   return 0;
25         int n=grid.length;
26         int m=grid[0].length;
27         int count=0;
28         for(int i=0;i<n;i++){
29             for(int j=0;j<m;j++){
30                 if(grid[i][j]){
31                     dfs(grid,i,j);
32                     count++;
33                 }
34             }
35         }
36         return count;
37     }
38 }

 

岛屿的个数number-of-islands

标签:

原文地址:http://www.cnblogs.com/wangnanabuaa/p/5011621.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!