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

为什么复旦教授建议在洗澡时千万不要做人脸认证。

0
分享至

最近在网上看到一个新闻,中科院张军平教授提醒大家,千万不要在洗澡的时候去做人脸认证。他说:摄像头并不是只看到圆的这一块内容,屏幕上所显示的“摄像头的圆”其实是起了一个“掩码”的作用,实际上被拍到的画面不止于这个“圆”。

其实张教授说的非常对,所谓的人脸识别并不是只拍摄圆框内的图像,人脸识别它调用的是手机的相机,需要拍照权限,整个拍摄区域是一个矩形,也就是整个屏幕都能看到的区域,和平时拍照一样。而在人脸识别中的那个圆形图像主要是确认你不要偏的太远,所以很多人都认为相机是只抓取了圆形框的那一块,实际上这是不对的。


为什么我知道这么多,因为在很多年前公司做国内外贷款业务的时候,我做过人脸识别的功能,拍摄无关的区域我们会用图片把它盖上,给你看到的要么是一个圆形头像,要么是一个小的矩形,但拍摄之后我们还会对图像截取和压缩,截取的时候只截取矩形框内的图像,如果拍照的时候离的太远,是可以看到上半身的。

当时我们在服务器后台确实也看到不少光着膀子的。如果遇到那种图像不截取的,基本上你拍到的所有区域都是能看到的,所以大家人脸识别的时候最好还是要穿上衣服。


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

来看下今天的算法题,这题是LeetCode的第1559题:二维网格图中探测环,难度是中等。

给你一个二维字符网格数组 grid ,大小为 m x n ,你需要检查 grid 中是否存在相同值形成的环。

一个环是一条开始和结束于同一个格子的长度大于等于 4 的路径。对于一个给定的格子,你可以移动到它上、下、左、右四个方向相邻的格子之一,可以移动的前提是这两个格子有相同的值 。

同时,你也不能回到上一次移动时所在的格子。比方说,环 (1, 1) -> (1, 2) -> (1, 1) 是不合法的,因为从 (1, 2) 移动到 (1, 1) 回到了上一次移动时的格子。

如果 grid 中有相同值形成的环,请你返回 true ,否则返回 false 。

示例1:



输入:grid = [["a","a","a","a"],["a","b","b","a"],["a","b","b","a"],["a","a","a","a"]] 输出:true 解释:如上图所示,有 2 个用不同颜色标出来的环:

示例2:



输入:grid = [["c","c","c","a"],["c","d","c","c"],["c","c","e","c"],["f","c","c","c"]] 输出:true 解释:如上图所示,只有高亮所示的一个合法环:

  • m == grid.length

  • n == grid[i].length

  • 1 <= m <= 500

  • 1 <= n <= 500

  • grid 只包含小写英文字母。

问题分析

这题让判断在矩阵中相同的字符是否可以构成环,解法比较多,可以使用并查集,也可以使用BFS或者DFS。我们按照矩阵的深度优先搜索(DFS)来解这道题。

首先从起始点开始搜索,只搜索字符相同的点,搜索的时候只能沿着当前位置的上下左右四个方向搜索,并且搜索的节点不能重复,也就是不能回退,

如果遇到某个点被搜索过,说明找到了一个环,直接返回true即可。否则继续遍历矩阵中下一个没有被搜索过的点,从该点继续搜索。

JAVA:

public boolean containsCycle(char[][] grid) {
int m = grid.length, n = grid[0].length;
boolean[][] vis = newboolean[m][n];// 记录当前位置是否被访问过
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if (!vis[i][j] && dfs(grid, vis, i, j, -1, -1, grid[i][j]))
returntrue;
}
}
returnfalse;
}


// (pai,paj)表示上一个节点的坐标,ch表示本次搜索的字符必须和ch字符相同。
private boolean dfs(char[][] grid, boolean[][] vis, int i, int j, int pai, int paj, char ch) {
// 边界条件判断
if (i < 0 || i >= grid.length || j < 0 || j >= grid[0].length || grid[i][j] != ch)
returnfalse;
if (vis[i][j]) // 已访问过该节点,说明存在环
returntrue;
vis[i][j] = true; // 标记当前节点为已访问
int[][] dirs = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}};// 方向数组
for (int[] dir : dirs) {
int x = i + dir[0];
int y = j + dir[1];
if (x == pai && y == paj) // 跳过上一个节点(避免回退)
continue;
if (dfs(grid, vis, x, y, i, j, ch))// 上下左右四个方向只要有一个能找到环,则返回true
returntrue;
}
returnfalse;
}

C++:

public:
bool containsCycle(vector> &grid) {
int m = grid.size(), n = grid[0].size();
vector> vis(m, vector(n, false));// 记录当前位置是否被访问过
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if (!vis[i][j] && dfs(grid, vis, i, j, -1, -1, grid[i][j]))
return true;
}
}
return false;
}


// (pai,paj)表示上一个节点的坐标,ch表示本次搜索的字符必须和ch字符相同。
bool dfs(vector> &grid, vector> &vis, int i, int j, int pai, int paj, char ch) {
// 边界条件判断
if (i < 0 || i >= grid.size() || j < 0 || j >= grid[0].size() || grid[i][j] != ch)
return false;
if (vis[i][j]) // 已访问过该节点,说明存在环
return true;
vis[i][j] = true; // 标记当前节点为已访问
int dirs[4][2] = {{-1, 0},
{1, 0},
{0, -1},
{0, 1}};// 方向数组
for (auto &dir: dirs) {
int x = i + dir[0];
int y = j + dir[1];
if (x == pai && y == paj) // 跳过上一个节点(避免回退)
continue;
if (dfs(grid, vis, x, y, i, j, ch))// 上下左右四个方向只要有一个能找到环,则返回true
return true;
}
return false;
}

笔者简介

博哥,真名:王一博,毕业十多年, 作者,专注于 数据结构和算法 的讲解,在全球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.

相关推荐
热点推荐
独家调查:消失在 08:10 —穆杰塔巴的“生存奇迹”与暗黑交易

独家调查:消失在 08:10 —穆杰塔巴的“生存奇迹”与暗黑交易

卷卷百事通
2026-03-07 09:20:44
一勺猪油等于五副药?医生劝告:高血压患者吃猪油,要牢记这4点

一勺猪油等于五副药?医生劝告:高血压患者吃猪油,要牢记这4点

蜉蝣说
2026-03-10 11:32:10
赶紧关窗!已提前到来!

赶紧关窗!已提前到来!

羊城攻略
2026-03-08 22:54:35
怎么判断一个单位已经烂透了?网友:我公司全中,属实扎心

怎么判断一个单位已经烂透了?网友:我公司全中,属实扎心

另子维爱读史
2026-01-01 23:40:47
玄学提醒:如果一个人还在穿着10年前的衣服,只说明3个问题

玄学提醒:如果一个人还在穿着10年前的衣服,只说明3个问题

洞读君
2026-03-04 14:30:12
最新民调出炉,台南局势惊人,郑丽文、侯友宜首合体,彰化传警讯

最新民调出炉,台南局势惊人,郑丽文、侯友宜首合体,彰化传警讯

北纬的咖啡豆
2026-03-10 14:17:27
难怪特朗普想要停火,没有等来伊朗的投降书,反而先等来一个噩耗

难怪特朗普想要停火,没有等来伊朗的投降书,反而先等来一个噩耗

咣当地球
2026-03-10 19:09:39
全国人大代表建议:强制要求外卖包装标注材质类型

全国人大代表建议:强制要求外卖包装标注材质类型

中国网
2026-03-09 18:02:07
淋浴玻璃隔断“正退出”中国家庭?看了年轻人的做法,发现很高级

淋浴玻璃隔断“正退出”中国家庭?看了年轻人的做法,发现很高级

室内设计师有料儿
2026-03-10 10:38:48
卷来卷去,工资重回3000元时代!为什么这次大家不再抱怨了?

卷来卷去,工资重回3000元时代!为什么这次大家不再抱怨了?

另子维爱读史
2026-01-26 20:08:00
江苏女子养大型犬,70岁父亲被咬住院,给狗做了安乐,被网友骂惨

江苏女子养大型犬,70岁父亲被咬住院,给狗做了安乐,被网友骂惨

离离言几许
2026-03-09 20:42:28
“6G要来了”冲上热搜,概念股“涨声”一片

“6G要来了”冲上热搜,概念股“涨声”一片

金融投资报
2026-03-10 16:35:09
1986年陈永贵病逝,追悼会规格成难题,邓小平只说了一句话,全场安静

1986年陈永贵病逝,追悼会规格成难题,邓小平只说了一句话,全场安静

寄史言志
2026-01-04 16:34:31
波克罗夫斯克(红军城)和米尔诺赫拉德失守很久了,再复盘说几句

波克罗夫斯克(红军城)和米尔诺赫拉德失守很久了,再复盘说几句

山河路口
2026-03-10 19:26:51
紧急叫停!提醒:服用阿托伐他汀的人,身体出现这4症状必须停药

紧急叫停!提醒:服用阿托伐他汀的人,身体出现这4症状必须停药

岐黄传人孙大夫
2026-03-10 18:51:11
别被文化同化骗了,汉族能延续几千年,靠的从来不是讲道理

别被文化同化骗了,汉族能延续几千年,靠的从来不是讲道理

掠影后有感
2026-03-09 09:52:38
清朝入关后,他本可成开国皇帝,却被亲叔叔害死,妻子被人霸占

清朝入关后,他本可成开国皇帝,却被亲叔叔害死,妻子被人霸占

铭记历史呀
2026-03-10 15:14:59
伊朗提出条件:任何阿拉伯或欧洲国家,只要“驱逐以色列和美国大使”,即可“完全自由、合法地通过霍尔木兹海峡”

伊朗提出条件:任何阿拉伯或欧洲国家,只要“驱逐以色列和美国大使”,即可“完全自由、合法地通过霍尔木兹海峡”

中国能源网
2026-03-10 10:29:08
盛海琳:60岁产双胞胎轰动全国,76岁现状如何

盛海琳:60岁产双胞胎轰动全国,76岁现状如何

星星没有你亮
2026-02-27 08:39:58
请把这篇文章,转给你那个想装 OpenClaw 的领导。

请把这篇文章,转给你那个想装 OpenClaw 的领导。

差评XPIN
2026-03-10 00:10:48
2026-03-10 20:16:49
数据结构和算法
数据结构和算法
专门介绍和写算法题解的号
268文章数 3关注度
往期回顾 全部

科技要闻

全民"养虾"背后:大厂集体下场疯狂卖Token

头条要闻

专家:打击伊朗遭3大反噬 特朗普政府或真有点"撑不住"

头条要闻

专家:打击伊朗遭3大反噬 特朗普政府或真有点"撑不住"

体育要闻

加兰没那么差,但鲈鱼会用吗?

娱乐要闻

肖战首夺SMG视帝,孙俪四封视后创历史

财经要闻

“龙虾补贴”密集出炉 最高1000万!

汽车要闻

MG4有SUV衍生 上汽乘用车多款新车规划曝光

态度原创

亲子
房产
艺术
教育
游戏

亲子要闻

宝蓝和弟弟出去玩弄得一身泥巴,爸爸赶紧给她们洗了个泡泡浴。

房产要闻

信号!千亿巨头入局,三亚开启新一轮大征拆!

艺术要闻

30000亩杏花开了,新疆的春天这么美!

教育要闻

“解散课题组也不要这种女生”,男导师拒收女学生,被赞人间清醒

外媒盘点:PSPlus会员库十大精选游戏 你玩过几个?

无障碍浏览 进入关怀版