难度:中等
题目内容:
给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。
岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。
此外,你可以假设该网格的四条边均被水包围。
示例 1:
输入:
11110
11010
11000
00000
输出: 1
示例 2:
输入:
11000
11000
00100
00011
输出: 3
解释: 每座岛屿只能由水平和/或竖直方向上相邻的陆地连接而成。
题解:
咋又是岛屿啊
其实蛮容易的,遍历一下,然后每当碰到岛屿1的时候,就把和它相邻的1全部弄沉变成0,一个递归就可以了
这样遍历一下碰到几个1就是几个岛屿咯
``python3
class Solution:
def numIslands(self, grid: List[List[str]]) -> int:
num = 0
for i in range(len(grid)):
for j in range(len(grid[0])):
if grid[i][j] == "1":
num += 1
self.sinkIslands(grid,i,j)#弄沉岛屿
return num
def sinkIslands(self,grid,i,j):
if i+1 < len(grid):
if grid[i+1][j] == "1":
grid[i+1][j] = "0"
self.sinkIslands(grid,i+1,j)
if i >0:
if grid[i-1][j] == "1":
grid[i-1][j] = "0"
self.sinkIslands(grid,i-1,j)
if j+1 < len(grid[0]):
if grid[i][j+1] == "1":
grid[i][j+1] = "0"
self.sinkIslands(grid,i,j+1)
if j > 0:
if grid[i][j-1] == "1":
grid[i][j-1] = "0"
self.sinkIslands(grid,i,j-1)
![image.png](https://img.haomeiwen.com/i21470277/0586db7efc6e1cda.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
网友评论