I'm confused. I don't understand how visited
can be updated in numIslands
by making a change in DFS
.
The way I understood it was that visited
, once passed into DFS
, is like a copy of the original visited
.
Is this not the case?
class Solution:
def DFS(self, grid, visited, i, j):
if i < 0 or j < 0 or i >= len(grid) or j >= len(grid[0]) or visited[i][j] or grid[i][j] == '0':
return
visited[i][j] = True
self.DFS(grid, visited, i+1, j)
self.DFS(grid, visited, i-1, j)
self.DFS(grid, visited, i, j+1)
self.DFS(grid, visited, i, j-1)
def numIslands(self, grid: List[List[str]]) -> int:
if not grid: return 0
visited = [[False for i in range(len(grid[0]))] for j in range(len(grid))]
count = 0
for i in range(len(grid)):
for j in range(len(grid[0])):
if grid[i][j] == '1' and visited[i][j] == False:
self.DFS(grid, visited, i, j) # TODO
count += 1
return count