题目描述
给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。
示例 1:
输入:
11110
11010
11000
00000
输出: 1
示例 2:
输入:
11000
11000
00100
00011
输出: 3
知识点
图的遍历
Qiang的思路
class Solution:
def dfs(self, grid: List[List[str]], i: int, j: int) -> bool:
if i<0 or j<0 or i>len(grid[:])-1 or j>len(grid[0])-1 or grid[i][j]!='1':
return False
grid[i][j]='-1'
self.dfs(grid, i-1, j)
self.dfs(grid, i+1, j)
self.dfs(grid, i, j-1)
self.dfs(grid, i, j+1)
return True
def numIslands(self, grid: List[List[str]]) -> int:
num=0
for i in range(len(grid[:])):
for j in range(len(grid[0])):
num+=1 if self.dfs(grid, i, j)
return num
作者原创,如需转载及其他问题请邮箱联系:lwqiang_chn@163.com。
个人网站:https://www.myqiang.top。
网友评论