岛屿的个数number-of-islands

给一个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 }

 

posted @ 2015-12-01 23:07  码代码的banana  阅读(488)  评论(0编辑  收藏  举报