【算法面试必刷】200. 岛屿数量
目录题目题目链接思路复杂度代码题目给你一个由1陆地和0水组成的的二维网格请你计算网格中岛屿的数量。岛屿总是被水包围并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外你可以假设该网格的四条边均被水包围。题目链接200. 岛屿数量 - 力扣LeetCodehttps://leetcode.cn/problems/number-of-islands/description/?envTypestudy-plan-v2envIdtop-100-liked思路遍历整个网格对每个格子进行检查发现新岛屿如果遇到1说明发现一个新岛屿计数器加1淹没整个岛屿通过 DFS 把与这个1相连的所有1都变成0避免重复计数继续遍历直到所有格子都检查完复杂度时间复杂度O(n × m)每个格子最多被访问一次变成0后不再访问DFS 的总调用次数等于陆地的格子数最坏情况全是陆地需要访问所有格子空间复杂度O(n × m)最坏情况全是陆地递归深度可能达到 n × m但实际受栈限制访问数组v的大小为 n × m代码class Solution { public: // 访问标记数组记录格子是否被访问过 bool v[1010][1010]; // 四个方向的移动向量下、右、上、左 int dx[4] {1, 0, -1, 0}; int dy[4] {0, 1, 0, -1}; int ans 0; // 岛屿数量计数器 /** * 深度优先搜索将整个岛屿淹没变成0 * param x 当前格子的行坐标 * param y 当前格子的列坐标 * param grid 网格引用会被修改 */ void dfs(int x, int y, vectorvectorchar grid) { int n grid.size(); // 网格行数 int m grid[0].size(); // 网格列数 // 标记当前格子已访问 v[x][y] 1; // 将当前陆地变成水淹没 if (grid[x][y] 1) { grid[x][y] 0; } // 尝试四个方向移动 for (int i 0; i 4; i) { int xx x dx[i]; // 新位置的行 int yy y dy[i]; // 新位置的列 // 检查是否可以继续搜索 // 1. 不能越界 // 2. 不能访问过 // 3. 不能是水0 if (xx 0 || yy 0 || xx n || yy m || v[xx][yy] || grid[xx][yy] 0) { continue; } // 递归搜索相邻陆地 dfs(xx, yy, grid); } } /** * 计算岛屿数量 * param grid 二维字符网格 * return 岛屿数量 */ int numIslands(vectorvectorchar grid) { int n grid.size(); int m grid[0].size(); // 初始化访问标记也可以直接用grid本身标记这里保留v数组 memset(v, 0, sizeof(v)); ans 0; // 遍历整个网格 for (int i 0; i n; i) { for (int j 0; j m; j) { // 发现新岛屿遇到1 if (grid[i][j] 1) { ans; // 岛屿数量加1 dfs(i, j, grid); // 淹没整个岛屿 } } } return ans; } };

相关新闻

YOLOv11涨点改进| CVPR 2026 |全网独家首发、特征融合改进篇 | 引入 LFSB 差分双维注意融合模块,通过交替特征融合与分离策略,能够精准区分目标特征,顶会助力YOLOv11有效涨点

YOLOv11涨点改进| CVPR 2026 |全网独家首发、特征融合改进篇 | 引入 LFSB 差分双维注意融合模块,通过交替特征融合与分离策略,能够精准区分目标特征,顶会助力YOLOv11有效涨点

一、本文介绍 🔥本文给大家介绍利用 LSFB 差分双维注意融合模块改进YOLOv11网络模型, 可以有效提升模型在复杂场景下的特征分离能力,特别是在处理重叠物体或反射干扰时。通过交替的特征融合与分离策略,LSFB能够精准区分不同层次和模态的特征,减少因模态混淆带来的性能损…

2026/7/6 1:19:37 阅读更多 →
纳米抗体赋能肿瘤诊疗一体化:开启精准纳米免疫治疗新时代

纳米抗体赋能肿瘤诊疗一体化:开启精准纳米免疫治疗新时代

在肿瘤精准医疗快速发展的今天,诊疗一体化(Theranostics)已成为突破传统癌症诊疗模式的重要方向。纳米药物凭借其高渗透、长循环、可控释药等优势,在改善癌症诊断精度、提升治疗效果、降低毒副作用等方面展现出巨大潜力。而将纳米…

2026/5/17 8:33:09 阅读更多 →
提示工程架构师的AI上下文工程长短期记忆机制设计秘籍大公开

提示工程架构师的AI上下文工程长短期记忆机制设计秘籍大公开

提示工程架构师的AI上下文工程:长短期记忆机制设计全攻略 关键词 提示工程、上下文工程、长短期记忆机制、AI上下文管理、向量数据库、记忆衰减、多模态整合 摘要 当你和AI聊到一半,它突然“忘了”之前的关键信息(比如订单号、偏好),你会不会崩溃?这不是AI“故意”的…

2026/7/3 15:18:37 阅读更多 →

最新新闻

5大核心技术揭秘:Topit如何实现macOS窗口置顶的魔法效果

5大核心技术揭秘:Topit如何实现macOS窗口置顶的魔法效果

5大核心技术揭秘:Topit如何实现macOS窗口置顶的魔法效果 【免费下载链接】Topit Pin any window to the top of your screen / 在Mac上将你的任何窗口强制置顶 项目地址: https://gitcode.com/gh_mirrors/to/Topit 你是否曾遇到过这样的困扰:在编…

2026/7/6 1:53:42 阅读更多 →
华为RH2288H V3 Windows Server 2008安装:3个驱动安装难点与解决方案

华为RH2288H V3 Windows Server 2008安装:3个驱动安装难点与解决方案

华为RH2288H V3服务器Windows Server 2008驱动安装全攻略:从RAID卡到芯片组的实战解决方案 在数字化转型的浪潮中,企业级服务器作为IT基础设施的核心,其稳定性和性能直接关系到业务连续性。华为RH2288H V3作为一款经典的2U机架式服务器&…

2026/7/6 1:53:42 阅读更多 →
中小教培机构到底该怎么选管理系统?一个12年运营顾问掏心窝建议

中小教培机构到底该怎么选管理系统?一个12年运营顾问掏心窝建议

教培机构为什么总是管不好账、留不住人? 做了12年校区运营咨询,我见过太多中小机构死在"管理"两个字上。不是课上得不好,是排课冲突、续费提醒漏发、课时算不清、家长投诉没人接——这些琐碎的事,一点点把校长的精力吃…

2026/7/6 1:49:40 阅读更多 →
线结构光标定精度对比:棋盘格法 vs 平面法向量法,3种中心线提取算法实测

线结构光标定精度对比:棋盘格法 vs 平面法向量法,3种中心线提取算法实测

线结构光标定精度对比:棋盘格法 vs 平面法向量法,3种中心线提取算法实测在工业检测、逆向工程和机器人引导等领域,高精度三维测量技术发挥着关键作用。线结构光技术因其非接触、高效率和高精度的特点,成为三维测量的重要手段。然而…

2026/7/6 1:47:40 阅读更多 →
温州大学机器学习课程开源项目全解析:从环境搭建到算法实战的保姆级学习指南

温州大学机器学习课程开源项目全解析:从环境搭建到算法实战的保姆级学习指南

温州大学机器学习课程开源项目全解析:从环境搭建到算法实战的保姆级学习指南 在人工智能技术日新月异的今天,机器学习已成为计算机科学领域最热门的方向之一。对于初学者而言,面对浩如烟海的算法理论和复杂的数学推导,往往感到无从…

2026/7/6 1:45:39 阅读更多 →
Java设计模式——结构型

Java设计模式——结构型

设计模式:结构型模式结构型模式关注的是:类和对象之间如何组合,如何让系统结构更灵活、更容易扩展。 创建型模式解决“对象怎么创建”,结构型模式解决“对象怎么组装”。一、结构型模式总览结构型模式主要解决以下问题&#xff1a…

2026/7/6 1:45:39 阅读更多 →

日新闻

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2与MySQL单元测试兼容性:5个关键SQL语句差异与规避方案1. 单元测试中的数据库兼容性挑战在Java开发领域,单元测试是保证代码质量的重要环节。当应用涉及数据库操作时,测试环境的搭建往往成为开发者的痛点。H2数据库因其轻量级、内存模式和快…

2026/7/6 0:01:17 阅读更多 →
Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘 【免费下载链接】rbtray A fork of RBTray from http://sourceforge.net/p/rbtray/code/. 项目地址: https://gitcode.com/gh_mirrors/rb/rbtray 你是否厌倦了Windows任务栏上密密麻麻的图标&…

2026/7/6 0:01:17 阅读更多 →
Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C 运行时库一键安装终极指南:告别DLL缺失烦恼 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过这样的情况:下载了…

2026/7/6 0:05:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻