【题目】

【分析】
这题的本质就是求统计封闭岛屿的数目
1254. 统计封闭岛屿的数目
这两题的代码可以通用,就是稍微修改了一点细节
本题是求被0包围的1的个数
统计封闭岛屿的数目是求被1包围的0的区域个数不要求求0的个数,而求有多少个被包围的区域,所以代码只要小小的改动即可使用在本题中。如果是第一次接触此类题,可以先做统计封闭岛屿的数目这题,然后再进阶到本题,这样会更好接受
【代码】

class Solution:
def numEnclaves(self, grid: List[List[int]]) -> int:
visited=[[0 for i in range(len(grid[0]))] for i in range(len(grid))]
cnt=0
def dfs(x,y):
if x>=0 and x<len(grid) and y>=0 and y<len(grid[0]) and grid[x][y]==1 and visited[x][y]==0:
if x==0 or x==(len(grid)-1) or y==0 or y==(len(grid[0])-1):
return False
visited[x][y]=1
ans1=dfs(x-1,y)
ans2=dfs(x+1,y)
ans3=dfs(x,y+1)
ans4=dfs(x,y-1)
if ans1 and ans2 and ans3 and ans4:
self.tmp+=1
return True and ans1 and ans2 and ans3 and ans4
if x>=0 and x<len(grid) and y>=0 and y<len(grid[0]):
return True
return False
for i in range(len(grid)):
for j in range(len(grid[0])):
if grid[i][j]==1 and visited[i][j]==0:
self.tmp=0
res=dfs(i,j)
if res:
cnt+=self.tmp
return cnt
这篇博客主要讲解如何利用深度优先搜索(DFS)算法解决寻找被1包围的0的区域数量问题,即统计封闭岛屿的数目。提供的代码示例展示了如何在二维网格中进行DFS遍历,同时修改细节以适应不同题目需求。通过理解此问题,读者可以进一步掌握图论和搜索算法在解决实际问题中的应用。

被折叠的 条评论
为什么被折叠?



