zoukankan      html  css  js  c++  java
  • 二维数组,深度优先算法 -- 岛屿数量

    来源:力扣(LeetCode)

    链接:https://leetcode-cn.com/problems/number-of-islands

    给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。


    思路:

    1、线性遍历二维数组的所有数据

    2、遇到1时,岛屿数目+1,开始深度优先遍历找到整个岛屿,并在遍历过程中把找到的陆地置为0

    3、深度优先算法 使用

    代码

    class Solution {
    
        public void dfs(char[][] grid,int r,int c){
            if(r<0||c<0||r>=grid.length||c>=grid[0].length||grid[r][c]=='0')
            {
                return;
            }
            grid[r][c] = '0';
            dfs(grid,r-1,c);
            dfs(grid,r+1,c);
            dfs(grid,r,c-1);
            dfs(grid,r,c+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')
                    {
                        count++;
                        dfs(grid,i,j);
                    }
                }
            }
            return count;
    
        }
    }
  • 相关阅读:
    小程序模板
    小程序 if else
    小程序入门小知识
    懒加载
    展示效果
    五星评价
    萤火虫效果
    下雪效果
    选项卡
    VUE组件中 data 里面的数据为什么要return 出来
  • 原文地址:https://www.cnblogs.com/luiyuying/p/12553557.html
Copyright © 2011-2022 走看看