题目解析:计算无法离开网格边界的陆地单元格数量
题目描述
给定一个大小为 m × n 的二进制矩阵 grid
,其中:
0
表示海洋单元格,1
表示陆地单元格。
一次移动是指从一个陆地单元格走到另一个相邻(上下左右)的陆地单元格,或者跨过网格的边界。
请返回网格中 无法通过任意次数的移动离开网格边界的陆地单元格数量。
换句话说,我们要找出被“包围”的陆地数量——那些不能通过一条路径连通到网格边界的陆地。
题目分析
这道题目是典型的“岛屿包围”问题的变体。我们需要找出所有无法到达边界的陆地。
如果一个陆地块能连通到边界上的陆地,说明它可以通过多次移动最终“逃离”网格。因此,这部分陆地不计入结果。
所以,我们可以将问题转化为:
- 标记所有可以从边界出发到达的陆地(可逃离的陆地)
- 统计剩余未被标记的陆地单元格数量(即“被包围”的陆地)
解题思路
关键思路
- 先遍历网格边界上的所有陆地单元格。
- 对这些陆地单元格执行深度优先搜索(DFS)或广度