欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 高考 > 代码随想录算法营Day56 | 岛屿数量(深度+广度),岛屿的最大面积

代码随想录算法营Day56 | 岛屿数量(深度+广度),岛屿的最大面积

2025/11/9 3:53:31 来源:https://blog.csdn.net/m0_69752220/article/details/146019896  浏览:    关键词:代码随想录算法营Day56 | 岛屿数量(深度+广度),岛屿的最大面积

岛屿数量

这道题要求在有1,0 组成的m x n的矩阵中找到由1组成的岛屿数量。使用深度或者广度优先算法来进行解题。

深度:

def solution(matrix):m,n = len(matrix),len(matrix[0])res = 0def dfs(x,y):if 0<=x<m and 0<=y<n and matrix[x][y] == 1:matrix[x][y] = 0dfs(x+1,y)dfs(x-1,y)dfs(x,y+1)dfs(x,y-1)for i in range(m):for j in range(n):if matrix[i][j] == 1:res += 1dfs(i,j)return res

广度:

def solution(matrix):m,n = len(matrix),len(matrix[0])res = 0def bfs(x,y):q = deque([])q.append((x,y))while q:x1,y1 = q.popleft()if 0<=x1<m and 0<=y1<n and matrix[x1][y1] == 1:matrix[x1][y1] = 0q.append((x1+1,y1))q.append((x1-1,y1))q.append((x1,y1+1))q.append((x1,y1-1))for i in range(m):for j in range(n):if matrix[i][j] == 1:res += 1bfs(i,j)return res

岛屿的最大面积

这题与上题类似,只不过他要问最大的陆地的面积是多少。

from collections import deque
def solution(matrix):m,n = len(matrix),len(matrix[0])res = 0def bfs(x,y):area = 0q = deque([])q.append((x,y))while q:x1,y1 = q.popleft()if 0<=x1<m and 0<=y1<n and matrix[x1][y1] == 1:area += 1matrix[x1][y1] = 0q.append((x1+1,y1))q.append((x1-1,y1))q.append((x1,y1+1))q.append((x1,y1-1))return areafor i in range(m):for j in range(n):if matrix[i][j] == 1:res = max(res,bfs(i,j))return res

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词