网易首页 > 网易号 > 正文 申请入驻

这以后谁还敢连公司Wifi。

0
分享至

最近在网上看到一张截图,一家公司通过网络统计了全公司平均工作占比,以及按时上线的准时率,还有工作期间大家都看了哪些网站,网友评论到以后谁还敢连接公司WiFi。

不过我知道公司是可以检测到你浏览了哪些网站,但我确实没注意,因为我经常在工作的时候没事也会看看招聘网站,以后我也要注意了。不过退一步来说就是看了,公司也不知道是谁看的,因为他不知道哪个连的是你的手机。这里也提醒大家工作时候尽量不要连公司wifi摸鱼。






--------------下面是今天的算法题--------------

来看下今天的算法题,这题是LeetCode的第1905题:统计子岛屿,难度是中等。

给你两个 m x n 的二进制矩阵 grid1 和 grid2 ,它们只包含 0 (表示水域)和 1 (表示陆地)。一个岛屿是由四个方向 (水平或者竖直)上相邻的 1 组成的区域。任何矩阵以外的区域都视为水域。

如果 grid2 的一个岛屿,被 grid1 的一个岛屿完全包含,也就是说 grid2 中该岛屿的每一个格子都被 grid1 中同一个岛屿完全包含,那么我们称 grid2 中的这个岛屿为子岛屿 。请你返回 grid2 中子岛屿的数目 。

示例1:



输入:grid1 = [[1,1,1,0,0],[0,1,1,1,1],[0,0,0,0,0],[1,0,0,0,0],[1,1,0,1,1]], grid2 = [[1,1,1,0,0],[0,0,1,1,1],[0,1,0,0,0],[1,0,1,1,0],[0,1,0,1,0]] 输出:3 解释:如上图所示,左边为 grid1 ,右边为 grid2 。 grid2 中标红的 1 区域是子岛屿,总共有 3 个子岛屿。

示例2:



输入:grid1 = [[1,0,1,0,1],[1,1,1,1,1],[0,0,0,0,0],[1,1,1,1,1],[1,0,1,0,1]], grid2 = [[0,0,0,0,0],[1,1,1,1,1],[0,1,0,1,0],[0,1,0,1,0],[1,0,0,0,1]] 输出:2 解释:如上图所示,左边为 grid1 ,右边为 grid2 。 grid2 中标红的 1 区域是子岛屿,总共有 2 个子岛屿。

  • m == grid1.length == grid2.length

  • n == grid1[i].length == grid2[i].length

  • 1 <= m, n <= 500

  • grid1[i][j] 和 grid2[i][j] 都要么是 0 要么是 1 。

问题分析

这题让计算右边的矩阵中有多少个岛屿是左边矩阵的子岛屿,所谓的岛屿,也就是连在一起的陆地,称为一个岛屿。所谓的子岛屿,也就是一个岛屿的所有陆地都被另一个岛屿包含。

解这题之前,我们先把左边矩阵中所有的岛屿都编上号,因为矩阵中只有 0 和 1 ,我们编号从 2 开始。由于这两个矩阵的长和宽都是一样的,我们遍历右边矩阵的时候,如果遇到一块陆地,然后再判断左边对应的位置是不是一个岛屿,如果左边对应的位置不是一个岛屿,那么右边和这块陆地相连的岛屿就不可能是左边的子岛屿。

如果左边对应的位置是一个岛屿,那么还要判断右边和该陆地相连的所有陆地(因为他们属于同一岛屿)是否都属于左边的那个岛屿。

JAVA:

private boolean isChild = true;// 是否是子岛屿

public int countSubIslands(int[][] grid1, int[][] grid2) {
int m = grid1.length, n = grid1[0].length;
int index = 2;// 给岛屿编号,相连的陆地是一个岛屿,他们的编号相同。
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if (grid1[i][j] == 1)
dfs1(grid1, i, j, index++);
}
}
int ans = 0;
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
// 找到grid2的所有岛屿,且每个岛屿中每个位置都与岛屿1中该位置的岛屿编号相同,才算一个子岛屿
if (grid2[i][j] == 1 && grid1[i][j] >= 2) {
isChild = true;
dfs2(grid2, i, j, grid1[i][j], grid1);
if (isChild)
ans++;
}
}
}
return ans;
}

// 遍历矩阵1
private void dfs1(int[][] grid1, int i, int j, int index) {
if (i < 0 || i >= grid1.length || j < 0 || j >= grid1[0].length || grid1[i][j] != 1)
return;
grid1[i][j] = index;// 挨着的陆地属于同一个岛屿
dfs1(grid1, i - 1, j, index);// 上
dfs1(grid1, i + 1, j, index);// 下
dfs1(grid1, i, j - 1, index);// 左
dfs1(grid1, i, j + 1, index);// 右
}

// 遍历矩阵2
private void dfs2(int[][] grid2, int i, int j, int index, int[][] grid1) {
if (i < 0 || i >= grid2.length || j < 0 || j >= grid2[0].length || grid2[i][j] != 1)
return;
grid2[i][j] = -1;
if (grid1[i][j] != index)
isChild = false;// 不是子岛屿
dfs2(grid2, i - 1, j, index, grid1);// 上
dfs2(grid2, i + 1, j, index, grid1);// 下
dfs2(grid2, i, j - 1, index, grid1);// 左
dfs2(grid2, i, j + 1, index, grid1);// 右
}

C++:

public:
int countSubIslands(vector> &grid1, vector> &grid2) {
int m = grid1.size();
int n = grid1[0].size();
int index = 2; // 给岛屿编号,相连的陆地是一个岛屿,他们的编号相同。
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if (grid1[i][j] == 1)
dfs1(grid1, i, j, index++);
}
}

int ans = 0;
// 第二步:遍历 grid2,统计子岛屿数量
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
// 找到grid2的所有岛屿,且每个岛屿中每个位置都与岛屿1中该位置的岛屿编号相同,才算一个子岛屿
if (grid2[i][j] == 1 && grid1[i][j] >= 2) {
isChild = true; // 重置标记
dfs2(grid2, i, j, grid1[i][j], grid1);
if (isChild) // 如果是子岛屿,计数+1
ans++;
}
}
}
return ans;
}

private:
bool isChild = true;// 是否是子岛屿
// 遍历矩阵1,给岛屿编号
void dfs1(vector> &grid1, int i, int j, int index) {
// 边界和合法性检查
if (i < 0 || i >= grid1.size() || j < 0 || j >= grid1[0].size() || grid1[i][j] != 1)
return;
grid1[i][j] = index;// 挨着的陆地属于同一个岛屿// 挨着的陆地属于同一个岛屿
// 上下左右递归遍历
dfs1(grid1, i - 1, j, index); // 上
dfs1(grid1, i + 1, j, index); // 下
dfs1(grid1, i, j - 1, index); // 左
dfs1(grid1, i, j + 1, index); // 右
}

// 遍历矩阵2,判断是否为子岛屿
void dfs2(vector> &grid2, int i, int j, int index, vector> &grid1) {
// 边界和合法性检查
if (i < 0 || i >= grid2.size() || j < 0 || j >= grid2[0].size() || grid2[i][j] != 1)
return;
// 标记 grid2 ,避免重复遍历
grid2[i][j] = -1;
// 如果 grid1 对应位置的编号不一致,说明不是子岛屿
if (grid1[i][j] != index)
isChild = false;
// 上下左右递归遍历
dfs2(grid2, i - 1, j, index, grid1); // 上
dfs2(grid2, i + 1, j, index, grid1); // 下
dfs2(grid2, i, j - 1, index, grid1); // 左
dfs2(grid2, i, j + 1, index, grid1); // 右
}

笔者简介

博哥,真名:王一博,毕业十多年, 作者,专注于 数据结构和算法 的讲解,在全球30多个算法网站中累计做题2000多道,在公众号中写算法题解900多题,对算法题有自己独特的解题思路和解题技巧。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
广东今夜到明天强降雨来袭 珠三角局部或现特大暴雨并伴强对流

广东今夜到明天强降雨来袭 珠三角局部或现特大暴雨并伴强对流

北青网-北京青年报
2026-05-13 21:04:11
真相来了!网红郭有才在濮阳被赶下台,竟是现场人数远超报备规模

真相来了!网红郭有才在濮阳被赶下台,竟是现场人数远超报备规模

火山詩话
2026-05-13 14:03:16
20架C17抵京,特朗普搬家式外交,本想炫耀实力,结果被运20打脸

20架C17抵京,特朗普搬家式外交,本想炫耀实力,结果被运20打脸

青烟小先生
2026-05-12 09:30:12
特朗普访华,“正能量大V”们集体沉默了

特朗普访华,“正能量大V”们集体沉默了

清书先生
2026-05-13 21:52:18
今夜,美联储,利空突袭!芯片半导体,集体大跌

今夜,美联储,利空突袭!芯片半导体,集体大跌

中国基金报
2026-05-13 00:11:54
揭秘美总统外访阵仗有多夸张,血浆自带,安保足够打一场小型战争

揭秘美总统外访阵仗有多夸张,血浆自带,安保足够打一场小型战争

嫹笔牂牂
2026-05-12 16:44:04
最新消息:社保缴费基数与工资必须一致,税务开始落实了——

最新消息:社保缴费基数与工资必须一致,税务开始落实了——

叶初七
2026-05-13 11:52:21
浙江宣传评世界杯转播权之争:与其花费巨资追捧海外赛事,不如投入本土足球

浙江宣传评世界杯转播权之争:与其花费巨资追捧海外赛事,不如投入本土足球

澎湃新闻
2026-05-08 12:24:10
“华系内战”!选阿维塔12,还是其他?

“华系内战”!选阿维塔12,还是其他?

买车大师
2026-05-07 10:47:45
重庆发布中小河流涨水风险提示,涉及32个区县

重庆发布中小河流涨水风险提示,涉及32个区县

上游新闻
2026-05-13 21:19:05
4月汽车销量前十名仅剩一款燃油车!麦肯锡:燃油车中短期内在中国市场不会快速退出历史舞台

4月汽车销量前十名仅剩一款燃油车!麦肯锡:燃油车中短期内在中国市场不会快速退出历史舞台

每日经济新闻
2026-05-13 16:52:04
太突然!香港80后“地产女王”烧炭身亡,曾向朋友发信息称要自杀!她草根出生,做过百亿级收购,生前已陷入严重财务困境

太突然!香港80后“地产女王”烧炭身亡,曾向朋友发信息称要自杀!她草根出生,做过百亿级收购,生前已陷入严重财务困境

每日经济新闻
2026-05-13 19:54:12
为爱拼子!伊能静58岁怀男胎五个月,赴美生产引争议,秦昊态度成谜

为爱拼子!伊能静58岁怀男胎五个月,赴美生产引争议,秦昊态度成谜

八卦王者
2026-05-13 13:50:09
打通出行全场景,卓驭与中国一汽携手推动智能驾驶规模化量产

打通出行全场景,卓驭与中国一汽携手推动智能驾驶规模化量产

买车大师
2026-05-13 18:44:41
闪婚闪离 千万房产该怎么分?法院判了

闪婚闪离 千万房产该怎么分?法院判了

北青网-北京青年报
2026-05-13 15:12:10
坐标上海!被裁失业后的生活,引炸评论区,大家同为天涯沦落人…

坐标上海!被裁失业后的生活,引炸评论区,大家同为天涯沦落人…

慧翔百科
2026-05-13 11:30:11
特朗普访华,美国驻华大使馆的评论区亮了

特朗普访华,美国驻华大使馆的评论区亮了

历史总在押韵
2026-05-13 18:29:26
暴跌65%,中年人最爱的豪车也崩了!

暴跌65%,中年人最爱的豪车也崩了!

蒋东文
2026-05-12 21:16:35
刚刚,特朗普落地北京!浩浩荡荡的美国总统车队都有哪些玄机?

刚刚,特朗普落地北京!浩浩荡荡的美国总统车队都有哪些玄机?

军武速递
2026-05-13 21:34:28
为什么去过朝鲜回来就沉默的人,不是隐瞒,是真的说不出

为什么去过朝鲜回来就沉默的人,不是隐瞒,是真的说不出

老特有话说
2026-05-12 15:41:08
2026-05-13 23:00:49
数据结构和算法
数据结构和算法
专门介绍和写算法题解的号
273文章数 4关注度
往期回顾 全部

科技要闻

腾讯一季度营收1964.6亿元 同比增9%

头条要闻

为杜特尔特家族出头 菲参议员遭ICC通缉被困参院大楼

头条要闻

为杜特尔特家族出头 菲参议员遭ICC通缉被困参院大楼

体育要闻

14年半,74万,何冰娇没选那条更安稳的路

娱乐要闻

白鹿掉20万粉,网友为李晨鸣不平

财经要闻

美国总统特朗普抵达北京

汽车要闻

C级纯电轿跑 吉利银河"TT"申报图来了

态度原创

手机
本地
房产
旅游
教育

手机要闻

消息称vivo Pocket手持云台相机Q4发布,备货预期百万台

本地新闻

用苏绣的方式,打开江西婺源

房产要闻

卷疯了!最低杀到7字头!手握30万,海口楼市横着走!

旅游要闻

文旅视评|“串串游”走红:解锁“小而美”的文旅新风尚

教育要闻

今天主要是显摆一下

无障碍浏览 进入关怀版