• 二维数组,深度优先算法 -- 岛屿数量


    来源:力扣(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;
    
        }
    }
  • 相关阅读:
    HttpURLConnection用法详解
    Docker应用场景
    算法1
    Postman 使用详解
    Postman用法简介
    cookie和session
    HTTP简介
    get和post的区别
    git 同步非master分支
    SparseArray类
  • 原文地址:https://www.cnblogs.com/luiyuying/p/12553557.html
Copyright © 2020-2023  润新知