Re: [闲聊] 每日LeetCode

楼主: Rushia (みけねこ的鼻屎)   2023-04-06 14:28:33
1254. Number of Closed Islands
给你一个只有0和1的二维阵列,0表示陆地1表示海,若一块相连的陆地周围都是海则他是
一个Closed Islands,求出共存在几个Closed Islands。
Example :
https://assets.leetcode.com/uploads/2019/10/31/sample_3_1610.png
Input: 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]]
Output: 2
Explanation:
只有从左边数来的第一和第二个岛屿是Closed Islands,所以返回2。
https://assets.leetcode.com/uploads/2019/10/31/sample_4_1610.png
Input: grid = [[0,0,1,0,0],[0,1,0,1,0],[0,1,1,1,0]]
Output: 1
思路:
1.如果一个岛不是Closed Islands,那就表示这个岛的边界一定与阵列的边界相邻,
所以我们先扫描岛屿的最外圈把所有包含0的岛屿都去除。
2.去除最外圈的所有不同岛屿就是Closed Islands的数量了,若遇到某个点是0,可以用
dfs把所有相邻的0都标记成非0并把res递增,当每一格都走访完就求得解了。
Java Code:

Links booklink

Contact Us: admin [ a t ] ucptt.com