Skip to content

Commit 854d30f

Browse files
committed
Update 1254. 统计封闭岛屿的数目.md
1 parent bae5ad7 commit 854d30f

File tree

1 file changed

+35
-7
lines changed

1 file changed

+35
-7
lines changed

Solutions/1254. 统计封闭岛屿的数目.md

Lines changed: 35 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,23 +5,47 @@
55

66
## 题目大意
77

8-
给定一个二维矩阵 `grid`,每个位置要么是陆地(记号为 `0`)要么是水域(记号为 `1`)。
8+
**描述**给定一个二维矩阵 `grid`,每个位置要么是陆地(记号为 `0`)要么是水域(记号为 `1`)。
99

1010
我们从一块陆地出发,每次可以往上下左右 `4` 个方向相邻区域走,能走到的所有陆地区域,我们将其称为一座「岛屿」。
1111

1212
如果一座岛屿完全由水域包围,即陆地边缘上下左右所有相邻区域都是水域,那么我们将其称为「封闭岛屿」。
1313

14-
要求:返回封闭岛屿的数目。
14+
**要求**:返回封闭岛屿的数目。
1515

16-
## 解题思路
16+
**说明**
17+
18+
- $1 \le grid.length, grid[0].length \le 100$。
19+
- $0 \le grid[i][j] \le 1$。
1720

18-
递归遍历。
21+
**示例**
1922

20-
`grid[i][j] == 0` 的位置出发,递归遍历上下左右四个方向上相邻区域情况。如果上下左右都是 `grid[i][j] == 1`,则返回 `True`。如果有一个以上方向的 `grid[i][j] == 0`,则返回 `False`。遍历之后将当前陆地位置置为 `1`,表示该位置已经遍历过了。
23+
![](https://assets.leetcode.com/uploads/2019/10/31/sample_3_1610.png)
2124

22-
最后统计出上下左右都满足 `grid[i][j] == 1` 的情况数量,即为答案。
25+
```Python
26+
输入:grid = [[1,1,1,1,1,1,1,0],[1,0,0,0,0,1,1,0],[1,0,1,0,1,1,1,0],[1,0,0,0,0,1,0,1],[1,1,1,1,1,1,1,0]]
27+
输出:2
28+
解释:灰色区域的岛屿是封闭岛屿,因为这座岛屿完全被水域包围(即被 1 区域包围)。
29+
```
2330

24-
## 代码
31+
![](https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2019/11/07/sample_4_1610.png)
32+
33+
```Python
34+
输入:grid = [[0,0,1,0,0],[0,1,0,1,0],[0,1,1,1,0]]
35+
输出:1
36+
```
37+
38+
## 解题思路
39+
40+
### 思路 1:深度优先搜索
41+
42+
1.`grid[i][j] == 0` 的位置出发,使用深度优先搜索的方法遍历上下左右四个方向上相邻区域情况。
43+
1. 如果上下左右都是 `grid[i][j] == 1`,则返回 `True`
44+
2. 如果有一个以上方向的 `grid[i][j] == 0`,则返回 `False`
45+
3. 遍历之后将当前陆地位置置为 `1`,表示该位置已经遍历过了。
46+
2. 最后统计出上下左右都满足 `grid[i][j] == 1` 的情况数量,即为答案。
47+
48+
### 思路 1:代码
2549

2650
```Python
2751
class Solution:
@@ -53,3 +77,7 @@ class Solution:
5377
return res
5478
```
5579

80+
### 思路 1:复杂度分析
81+
82+
- **时间复杂度**:$O(m \times n)$。其中 $m$ 和 $n$ 分别为行数和列数。
83+
- **空间复杂度**:$O(m \times n)$。

0 commit comments

Comments
 (0)