В качестве нового питона программиста, я получил следующий вопрос и соответствующее решение «Количество острова» Leetcode Вопрос:
Вопрос: https://leetcode.com/problems/number-of-islands/
Учитывая 2d сетки карты «1 '(земля) и» 0' (воду), подсчитывает количество островов. Остров окружен водой и формируется путем соединения соседних земель по горизонтали или по вертикали. Вы можете предположить, что все четыре ребра сетки все окружены водой.
Пример:
Входные данные:
11110
11010
11 000
00000
Выход: 1
Решение:
class Solution:
def numIslands(self, grid: List[List[str]]) -> int:
rmax = len(grid)
if rmax == 0:
return 0
cmax = len(grid[0])
island = 0
def DFS(grid,r,c,rmax,cmax):
grid[r][c]='0'
if r+1<rmax and grid[r+1][c]=='1':
DFS(grid,r+1,c,rmax,cmax)
if r-1>=0 and grid[r-1][c]=='1':
DFS(grid,r-1,c,rmax,cmax)
if c+1<cmax and grid[r][c+1]=='1':
DFS(grid,r,c+1,rmax,cmax)
if c-1>=0 and grid[r][c-1]=='1':
DFS(grid,r,c-1,rmax,cmax)
for r in range(rmax):
for c in range(cmax):
if grid[r][c]=='1':
DFS(grid,r,c,rmax,cmax)
island+=1
return island
Может ли эксперт, дайте мне знать, что это базовый случай функции DFS?