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

2025年- H56-Lc164--200.岛屿数量(图论,深搜)--Java版

1.题目描述

在这里插入图片描述

2.思路

(1)主函数,存储图结构
(2)主函数,visit数组表示已访问过的元素
(3)辅助函数,用递归(深搜),遍历以已访问过的元素(陆地1)的相邻元素(陆地1)。
补充:深度搜索(递归)
(1)确定递归函数和参数
(2)确定终止条件
(3)单层搜索条件
在这里插入图片描述

3.代码实现

   public int numIslands(char[][] grid) {//行数int row = grid.length;//列数int col = grid[0].length;// visited 用于记录访问状态boolean[][] visited = new boolean[row][col];//所有数组的元素在创建时都会被自动初始化为默认值。//岛屿数量初始化int cnt = 0;//判空处理,整个图为null,行为0,列为0if (row == 0 || col == 0 || grid == null) {return 0;}//存储图结构for (int i = 0; i < row; i++) {for (int j = 0; j < col; j++) { // 如果当前是陆地且未被访问if (grid[i][j] == '1' && visited[i][j] == false)//!visited[i][j] 和visited[i][j]==false 等同{cnt++;dfs(grid, visited, i, j);// 每次DFS表示一个岛屿}}}return cnt;}// 深度优先搜索,将与当前位置相连的陆地都标记为已访问void dfs(char[][] grid, boolean visited[][], int i, int j) {int row = grid.length;int col = grid[0].length;// 越界或不是陆地或已访问,直接返回,切记因为索引是从0开始的,所以i>=row||j>=colif (i < 0 || j < 0 || i >= row || j >= col || visited[i][j] == true || grid[i][j] == '0') {return;}// 标记为已访问,把访问过的陆地的相邻陆地标记为已访问过visited[i][j] = true;dfs(grid, visited, i + 1, j);dfs(grid, visited, i - 1, j);dfs(grid, visited, i, j + 1);dfs(grid, visited, i, j - 1);}public static void main(String[] args) {H200 test = new H200();char[][] input = {{'1', '1', '1', '1', '0'},{'1', '1', '0', '1', '0'},{'1', '1', '0', '0', '0'},{'0', '0', '0', '0', '0'}};int numsIsland = test.numIslands(input);System.out.print(numsIsland);}

相关文章:

  • 深入了解 C# 异步编程库 AsyncEx
  • CppCon 2014 学习第2天:Using Web Services in C++
  • 【Java Web】速通JavaScript
  • Flutte ListView 列表组件
  • OpenCV CUDA模块结构分析与形状描述符------计算指定阶数的矩(Moments)所需的总数量函数:numMoments
  • 小程序 - 视图与逻辑
  • React从基础入门到高级实战:React 生态与工具 - React Query:异步状态管理
  • 飞牛NAS+Docker技术搭建个人博客站:公网远程部署实战指南
  • Ubuntu 24.04 LTS Chrome 中文输入法(搜狗等)失效?一行命令解决
  • 5.29打卡
  • 服务器密码安全运维解决新思路:凭据管理SMS+双因素SLA认证结合的方案
  • 我用Qt+Python实现了个监控QQ消息自动下载文件处理的办公外挂程序
  • 数据仓库分层 4 层模型是什么?
  • 动手学深度学习pytorch学习笔记 —— 第四章(2)
  • 【经验】Ubuntu中设置terminator的滚动行数、从Virtualbox复制到Windows时每行后多一空行
  • NumPy 聚合:最小、最大值及此间一切
  • 基于Docker和YARN的大数据环境部署实践最新版
  • 算法打卡第10天
  • 磁盘管理无法删除卷,虚拟磁盘管理器:不支持该请求
  • STM32 HAL库函数学习 GPIO篇
  • 改善网站建设/太原seo软件
  • 汽车之家网站是谁做的/怎么看app的下载网址
  • ps海报设计教程网页/seo外包软件
  • 视频网站seo实战/北京百度网站排名优化
  • 厦门首屈一指网站建设/淄博网站优化
  • 南通通州区城乡建设局网站/常用搜索引擎有哪些