In [44]:
# '1' are land, '0' is water. Found the *number* of islands
a = [[0,0,0,1,1],
[0,1,1,0,0],
[0,1,0,0,1],
[0,1,1,0,1],
[1,0,0,0,1]]
In [45]:
# Let's try a DFS
def created_visited(n,m):
row = [False]*m
arr = [row[:] for _ in range(n)]
return arr
def dfs(arr, i, j, visited):
if not (0 <= i < len(arr)):
return None
row = arr[i]
if not (0 <= j < len(row)):
return None
if visited[i][j]:
return None
visited[i][j] = True
if row[j]:
dfs(arr, i+1, j, visited)
dfs(arr, i, j+1, visited)
dfs(arr, i-1, j, visited)
dfs(arr, i, j-1, visited)
return bool(row[j])
def run(arr):
n_islands = 0
n = len(arr)
m = len(arr[0])
visited = created_visited(n,m)
for i in range(n):
for j in range(m):
if visited[i][j]:
continue
r = dfs(arr,i,j,visited)
n_islands += int(r)
print('Number of islands: {}'.format(n_islands))
In [46]:
run(a)
In [ ]: