新闻详情

新闻详情

首页 / 资讯中心 / 详情

DeepSeek LeetCode 200. 岛屿数量 Java实现

发布时间:2026/10/1 17:15:01来源:尧图网络
DeepSeek    LeetCode 200. 岛屿数量 Java实现
LeetCode 200. 岛屿数量题目描述给你一个由 ‘1’陆地和 ‘0’水组成的二维网格请你计算网格中岛屿的数量。岛屿总是被水包围并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。解法一DFS推荐遍历网格遇到 ‘1’ 就计数 1然后用 DFS 把整个岛屿沉没标记为 ‘0’。classSolution{publicintnumIslands(char[][]grid){if(gridnull||grid.length0)return0;introwsgrid.length;intcolsgrid[0].length;intcount0;for(inti0;irows;i){for(intj0;jcols;j){if(grid[i][j]1){count;dfs(grid,i,j);}}}returncount;}privatevoiddfs(char[][]grid,inti,intj){// 边界检查 水检查if(i0||igrid.length||j0||jgrid[0].length||grid[i][j]0){return;}// 标记为已访问沉没grid[i][j]0;// 四个方向递归dfs(grid,i1,j);dfs(grid,i-1,j);dfs(grid,i,j1);dfs(grid,i,j-1);}}复杂度分析· 时间复杂度O(M × N)每个格子最多访问一次· 空间复杂度O(M × N)最坏情况全是陆地递归栈深度解法二BFS避免栈溢出用队列替代递归适合大网格防止栈溢出。classSolution{publicintnumIslands(char[][]grid){if(gridnull||grid.length0)return0;introwsgrid.length;intcolsgrid[0].length;intcount0;int[][]dirs{{1,0},{-1,0},{0,1},{0,-1}};for(inti0;irows;i){for(intj0;jcols;j){if(grid[i][j]1){count;// BFSQueueint[]queuenewLinkedList();queue.offer(newint[]{i,j});grid[i][j]0;while(!queue.isEmpty()){int[]curqueue.poll();for(int[]d:dirs){intnicur[0]d[0];intnjcur[1]d[1];if(ni0nirowsnj0njcolsgrid[ni][nj]1){grid[ni][nj]0;queue.offer(newint[]{ni,nj});}}}}}}returncount;}}复杂度分析· 时间复杂度O(M × N)· 空间复杂度O(min(M, N))队列最坏情况解法三并查集Union-Find思路把每块陆地初始为独立集合相邻陆地合并最后统计集合个数。classSolution{privateint[]parent;privateintcount;publicintnumIslands(char[][]grid){if(gridnull||grid.length0)return0;introwsgrid.length;intcolsgrid[0].length;parentnewint[rows*cols];count0;// 初始化每个陆地是一个独立集合for(inti0;irows;i){for(intj0;jcols;j){if(grid[i][j]1){parent[i*colsj]i*colsj;count;}}}// 只需要向右和向下合并避免重复for(inti0;irows;i){for(intj0;jcols;j){if(grid[i][j]1){// 向下合并if(i1rowsgrid[i1][j]1){union(i*colsj,(i1)*colsj);}// 向右合并if(j1colsgrid[i][j1]1){union(i*colsj,i*colsj1);}}}}returncount;}privateintfind(intx){// 路径压缩if(parent[x]!x){parent[x]find(parent[x]);}returnparent[x];}privatevoidunion(intx,inty){introotXfind(x);introotYfind(y);if(rootX!rootY){parent[rootX]rootY;count--;// 合并后岛屿数量减 1}}}复杂度分析· 时间复杂度O(M × N × α)α 为阿克曼函数反函数近似常数· 空间复杂度O(M × N)三种解法对比解法 时间复杂度 空间复杂度 特点DFS O(M×N) O(M×N) 代码简洁可能栈溢出BFS O(M×N) O(min(M,N)) 安全代码略长并查集 O(M×N×α) O(M×N) 适合动态连通性问题易错点提示边界检查放在访问前避免数组越界入队时就标记 ‘0’BFS 尤其重要否则会重复入队修改原数组是常见做法若不允许修改需额外 boolean[][] visited面试建议· 首选 DFS代码最简洁面试官通常接受· 若面试官追问网格很大怎么办可以提 BFS 或迭代式 DFS· 若题目变形为动态加陆地如 LeetCode 305则必须用并查集
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Gajae-Code 的 bash 与 monitor 工具深度剖析:异步任务、超时钳制与输出溢出机制 2026/10/1 17:52:50

Gajae-Code 的 bash 与 monitor 工具深度剖析:异步任务、超时钳制与输出溢出机制

Gajae-Code 的 bash 与 monitor 工具深度剖析:异步任务、超时钳制与输出溢出机制 【免费下载链接】gajae-code Gajae Code MVP 项目地址: https://gitcode.com/gh_mirrors/ga/gajae-code Gajae Code 是面向 AI 编程场景的终端智能体,其中的 bash …

阅读更多 →
水果识别系统毕设:从数据集到推理界面的深度学习落地路径 2026/10/1 17:52:49

水果识别系统毕设:从数据集到推理界面的深度学习落地路径

简介:这是一套面向高校计算机相关专业毕业生的深度学习实战项目资料,以水果识别为应用场景,适合正在准备毕业设计、需要完整可运行案例的同学参考。项目难度适中,源码经过本地编译验证,评审分达到95分以上,…

阅读更多 →
山东大学编译原理新版实验一~三通关指南:词法、语法与语义分析实战 2026/10/1 17:52:49

山东大学编译原理新版实验一~三通关指南:词法、语法与语义分析实战

简介:这份资源是山东大学编译原理与技术课程新版实验一至三的配套代码包,面向正在学习编译器前端构建的高校学生与自学者,帮助解决词法分析与语法分析从理论到实现的落地问题。包内共15个文件,以8个C头文件与5个cpp源文件为核心&a…

阅读更多 →
Smartstore邮件模板引擎指南:如何用Liquid模板自动补全与语法高亮快速写出电商邮件 2026/10/1 17:52:42

Smartstore邮件模板引擎指南:如何用Liquid模板自动补全与语法高亮快速写出电商邮件

Smartstore邮件模板引擎指南:如何用Liquid模板自动补全与语法高亮快速写出电商邮件 【免费下载链接】Smartstore A modular, scalable and ultra-fast open-source all-in-one eCommerce platform built on ASP.NET Core 10 项目地址: https://gitcode.com/GitHub…

阅读更多 →
OpenClaw 人格塑造实战:用 SOUL.md 为你的 AI Agent 定义身份、边界与语气 2026/10/1 17:52:35

OpenClaw 人格塑造实战:用 SOUL.md 为你的 AI Agent 定义身份、边界与语气

文档教程人工智能大模型 【免费下载链接】awesome-generative-ai-guide A one stop repository for generative AI research updates, interview resources, notebooks and much more! 项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-generative-ai-gui…

阅读更多 →
C# Onnx P2PNet人群检测与计数:全流程推理源码解析 2026/10/1 17:52:29

C# Onnx P2PNet人群检测与计数:全流程推理源码解析

简介:面向C#开发者的P2PNet人群检测与计数完整工程源码,基于ONNX Runtime加载预训练模型,可在Visual Studio中直接编译运行,适用于安防监控、公共活动管理、商场客流统计等场景的实时人群计数需求。压缩包共77个文件,约…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉