当前位置: 首页 > article >正文

力扣200 岛屿数量 Java版本

文章目录

  • 题目描述
  • 代码

题目描述

给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。

岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。

此外,你可以假设该网格的四条边均被水包围。

示例 1:

输入:grid = [
[“1”,“1”,“1”,“1”,“0”],
[“1”,“1”,“0”,“1”,“0”],
[“1”,“1”,“0”,“0”,“0”],
[“0”,“0”,“0”,“0”,“0”]
]
输出:1
示例 2:

输入:grid = [
[“1”,“1”,“0”,“0”,“0”],
[“1”,“1”,“0”,“0”,“0”],
[“0”,“0”,“1”,“0”,“0”],
[“0”,“0”,“0”,“1”,“1”]
]
输出:3

提示:

m == grid.length
n == grid[i].length
1 <= m, n <= 300
grid[i][j] 的值为 ‘0’ 或 ‘1’

代码

class Solution {
    //使用深度优先搜索进行查找
    public int numIslands(char[][] grid) {
        int count = 0;//记录岛屿的数量
        for(int i=0;i<grid.length;i++){
            for(int j=0;j<grid[i].length;j++){
                if(grid[i][j]=='1'){
                    dfs(grid,i,j);
                    count++;
                }
            }
        }
        return count;
    }
    //深度优先的方法
    public void dfs(char[][] grid,int i,int j){
        //深度优先也是用的递归的方法,先找到递归出口
        if(i<0||j<0||i>=grid.length||j>=grid[0].length||grid[i][j]=='0'){
            return ;
        }
        //当前位置值为0,避免重复遍历
        grid[i][j] ='0';
        //然后依次深度优先遍历周边的元素
        dfs(grid,i+1,j);
        dfs(grid,i-1,j);
        dfs(grid,i,j+1);
        dfs(grid,i,j-1);
    }
}

http://www.kler.cn/a/416381.html

相关文章:

  • 安装Fcitx5输入框架和输入法自动部署脚本(来自Mark24)-Ubuntu通用
  • linux tcpdump编译
  • 气膜建筑:打造全天候安全作业空间,提升工程建设效率—轻空间
  • LLAVA论文简记
  • Jmeter进阶篇(29)AI+性能测试领域场景落地
  • 【前端开发】JS+Vuew3请求列表数据并分页
  • 怎么 php 基本都是外包 ?
  • 【湿度数据处理】中国地面气候资料日值数据集(V3.0)(MATLAB全代码)
  • MyBatis(mybatis_plus)中TypeHandler的使用教程
  • Java的LinkedList、HashSet与TreeSet
  • 基础Web安全|SQL注入
  • 【知识科普】设计模式之-责任链模式
  • 无人机+自组网+指挥车:空地一体化组网指挥系统技术详解
  • GO/Golang
  • AI开发:逻辑回归的概念 应用及开发初学- Python
  • 日常应用开发遇到的小问题二三则
  • Uniapp 安装安卓、IOS模拟器并调试
  • 长时间无事可做是个危险信号
  • aws出现创建ec2连接报错(网络问题)
  • webpack5 的五大核心配置(二)
  • redis中的bigkey及读取优化
  • 深度学习3:数据预处理使用Pandas与PyTorch的实践
  • 全面解析 MySQL 常见问题的排查与解决方法
  • USB-C取电协议芯片与LDR6328的功能解析
  • 【设计模式】创建型模式之单例模式(饿汉式 懒汉式 Golang实现)
  • SpringBoot小知识(2):日志