当前位置: 首页 > 后端技术 > Python

LeetcodeNumberofIslands(200)-BFS-附详解

时间:2023-03-25 21:39:21 Python

给你一个由'1'(陆地)和'0'(水)组成的二维网格,请计算网格中有多少个岛屿。岛屿总是被水包围,每个岛屿只能通过连接水平和/或垂直相邻的陆地才能形成。此外,您可以假设网格的所有四个侧面都被水包围。示例1:输入:grid=[["1","1","1","1","0"],["1","1","0","1","0"],["1","1","0","0","0"],["0","0","0","0","0"]]输出:1类解:defnumIslands(self,grid):count=0forrowinrange(len(grid)):forcolinrange(len(grid[0])):ifgrid[row][col]=='1':#找到第一块地count+=1#直接加1,后面其他的都标掉,不会增加总的grid[row][col]='0'#算完之后标掉land_positions=collections.deque()#声明一个队列,启动标准的BFS广度优先算法land_positions.append([row,col])#将position作为队列值加入队列whilelen(land_positions>0):#只要有仍然是队列中的值继续执行x,y=land_positions.popleft()#取出队头,即[[x,y+1]中new_x,new_y第一个输入的值,[x,y-1],[x+1,y],[x-1,y]]:#查看土地周围的位置if0<=new_x