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

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);}
http://www.lryc.cn/news/2393606.html

相关文章:

  • 自证式推理训练:大模型告别第三方打分的新纪元
  • vue2使用el-tree实现两棵树间节点的拖拽复制
  • 前端开发中 <> 符号解析问题全解:React、Vue 与 UniApp 场景分析与解决方案
  • 封装一个Qt调用动态库的类
  • [python] 最大公约数 和 最小公倍数
  • 如何在 Django 中集成 MCP Server
  • 从零开始的云计算生活——第十一天,知识延续,程序管理。
  • React 事件处理与合成事件机制揭秘
  • 【React】jsx 从声明式语法变成命令式语法
  • 【Dify学习笔记】:Dify离线安装插件教程
  • 基于c++11重构的muduo核心库项目梳理
  • GitHub 趋势日报 (2025年05月29日)
  • Oracle 19c导入数据出现ORA-56935 ORA-39065
  • Java大师成长计划之第35天:未来展望与个人总结
  • 7:OpenCV—图像形态学处理
  • 远控安全金标准,ToDesk、向日葵、网易UU安全功能盘点,是否能攻破防线
  • 终端没有5G图标-不支持特定NSA频段组合
  • Netty 实战篇:为 Netty RPC 框架引入调用链追踪,实现链路透明化
  • 第42节:模型优化与部署:Web服务部署(Flask, FastAPI)
  • pikachu通关教程-RCE
  • MyBatisPlus--快速入门
  • 鸿蒙 HarmonyOS - SideBarContainer 组件自学指南
  • 数据交易场景的数据质量评估
  • C++ list基础概念、list初始化、list赋值操作、list大小操作、list数据插入
  • 39. 自动化异步测试开发之编写异步业务函数、测试函数和测试类(函数写法)
  • Go语言defer关键字:延迟执行的精妙设计
  • 提升WSL中Ubuntu编译速度的完整指南
  • 【Linux 学习计划】-- 命令行参数 | 环境变量
  • 服务器Docker容器创建与VScode远程连接SSH使用
  • 体现物联网环境下安全防护的紧迫性 :物联网环境下的个人信息安全:隐忧与防护之道