zoukankan      html  css  js  c++  java
  • 岛屿的个数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 }
  • 相关阅读:
    磁盘
    磁盘接口
    Linux help websites
    [SOJ] 1282. Computer games (KMP)
    [SOJ]1753 解码
    hdu 3473 裸的划分树
    hdu 4417 划分树
    hdu 4665 搜索
    hdu 4340 树状DP
    hdu 4005 边连通度与缩点
  • 原文地址:https://www.cnblogs.com/wangnanabuaa/p/5011621.html
Copyright © 2011-2022 走看看