Вопрос в том, чтобы найти количество островов. https://leetcode.com/problems/number-of-islands/
Решение 1:
class Solution:
def dfs(self, row, column, grid):
if row < 0 or column < 0 or row>= len(grid) or column >= len(grid[0]):
return 0
if grid[row][column] == '0':
return 0
grid[row][column] = '0'
self.dfs(row+1, column, grid)
self.dfs(row-1, column, grid)
self.dfs(row, column+1, grid)
self.dfs(row, column-1, grid)
def numIslands(self, grid: List[List[str]]) -> int:
count = 0
for row in range(len(grid)):
for column in range(len(grid[0])):
if grid[row][column] == '1':
self.dfs(row, column, grid)
count += 1
return count
Решение 2 (не работает)
class Solution:
def dfs(self, row, column, grid):
if row < 0 or column < 0 or row>= len(grid) or column >= len(grid[0]):
return 0
if grid[row][column] == '0':
return 0
grid[row][column] = '0'
for i in range(-1, 2):
for j in range(-1, 2):
if i!=0 or j!=0:
self.dfs(row+i, column+j, grid)
def numIslands(self, grid: List[List[str]]) -> int:
count = 0
for row in range(len(grid)):
for column in range(len(grid[0])):
if grid[row][column] == '1':
self.dfs(row, column, grid)
count += 1
return count
Может кто-нибудь объяснить, почему 2 не работает Я запускаю al oop, в котором каждое выражение дает рекурсивный вызов.
Но этот лог c работает в Java, почему? https://www.youtube.com/watch?v=R4Nh-EgWjyQ