news 2026/5/1 9:30:50

12.13 - 岛屿数量 C语言中extern关键字的作用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
12.13 - 岛屿数量 C语言中extern关键字的作用

目录

1.岛屿数量

a.核心思想

b.思路

c.步骤

2.C语言中extern关键字的作用


1.岛屿数量

200. 岛屿数量 - 力扣(LeetCode)https://leetcode.cn/problems/number-of-islands/description/

class Solution { public: void dfs(vector<vector<char>>& grid, int r, int c) { int nr = grid.size(); int nc = grid[0].size(); // 检查边界条件和是否为陆地 if (r < 0 || c < 0 || r >= nr || c >= nc || grid[r][c] == '0') { return; } // 标记当前陆地为已访问(置为'0') grid[r][c] = '0'; // 递归访问相邻的四个方向 dfs(grid, r - 1, c); // 上 dfs(grid, r + 1, c); // 下 dfs(grid, r, c - 1); // 左 dfs(grid, r, c + 1); // 右 } int numIslands(vector<vector<char>>& grid) { if (grid.empty() || grid[0].empty()) return 0; int nr = grid.size(); // 行数 int nc = grid[0].size(); // 列数 int count = 0; // 岛屿计数 for (int r = 0; r < nr; ++r) { for (int c = 0; c < nc; ++c) { if (grid[r][c] == '1') { ++count; dfs(grid, r, c); } } } return count; } };

a.核心思想

利用深度优先搜索(DFS)或广度优先搜索(BFS)来遍历二维网格,将相邻的陆地标记为已访问,每次遇到新的未访问的陆地就表示发现一个新的岛屿。

b.思路

遍历二维网格中的每一个点,当遇到陆地(值为'1')且未被访问过时,启动 DFS 或 BFS 来标记所有与之相连的陆地为已访问,同时岛屿数量加 1。

c.步骤

① 初始化一个与网格大小相同的二维数组visited来记录每个点是否被访问过,或者直接修改原网格来标记已访问(将访问过的陆地置为'0')。

② 遍历二维网格,对于每个点:如果该点是陆地且未被访问过,进行 DFS 或 BFS 遍历所有相连的陆地并标记为已访问,同时岛屿数量加 1。

③ 返回岛屿数量。

2.C语言中extern关键字的作用

在C语言中,extern关键字用于声明变量或函数为外部链接,表示该变量/函数的定义在其他编译单元(如另一个源文件)中,当前文件仅引用它。其核心作用是解决跨文件的全局符号访问问题,不分配内存,仅声明存在性。

希望这些内容对大家有所帮助!

感谢大家的三连支持!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 9:27:53

iOS 有线投屏开源了:Windows 直连采集 iPhone 屏幕与音频的完整方案

一、前言过去在 Windows 上想要录制或展示 iPhone 屏幕&#xff0c;几乎只能依靠 AirPlay 或无线方案&#xff0c;这不仅存在延迟高、画质压缩严重的问题&#xff0c;还容易受到网络环境影响。现在&#xff0c;这个问题有了开源解决方案——quicktime_video_hack_windows 项目正…

作者头像 李华
网站建设 2026/5/1 9:30:47

3分钟搞定百度网盘全速下载:小白也能轻松上手的终极方案

还在为百度网盘那蜗牛般的下载速度抓狂吗&#xff1f;每次看到几十KB的下载进度&#xff0c;是不是感觉回到了拨号上网时代&#xff1f;别担心&#xff0c;今天我要分享的这个百度网盘直链解析工具&#xff0c;将彻底改变你的下载体验&#xff0c;让你在3分钟内实现满带宽下载&…

作者头像 李华
网站建设 2026/5/1 5:57:29

47、网络通信与安全:VoIP与SSH的深入解析

网络通信与安全:VoIP与SSH的深入解析 1. VoIP 基础与 Asterisk 管理 在 VoIP(Voice over Internet Protocol)领域,Asterisk 是一款强大的开源软件,可用于搭建功能完备的 VoIP 系统。 1.1 Asterisk 控制台输出与测试 当呼叫断开后,Asterisk 控制台可能会显示如下示例输…

作者头像 李华
网站建设 2026/5/1 5:57:27

AFE为何物

AFE 的全称是Analog Front-End&#xff0c;中文为模拟前端芯片&#xff0c;它是 BMS&#xff08;电池管理系统&#xff09;中负责电池核心参数采集与初步处理的关键专用芯片&#xff0c;也是高串数电池包&#xff08;如新能源车、储能电站电池&#xff09;的核心组件。 核心功…

作者头像 李华
网站建设 2026/4/30 22:28:21

Cesium快速入门20:Primitive的外观设置Appearance

前面我们学会了用 Entity 换皮肤&#xff1b;今天轮到 Primitive——自己捏几何体后&#xff0c;再给它穿什么样的“外衣”。 在 Cesium 里&#xff0c;这件外衣叫 Appearance&#xff08;外观&#xff09;。 它决定“像素怎么画、用什么材质、要不要光照”等所有渲染细节。 上…

作者头像 李华