Number of islands
class Solution:
def __init__(self):
self.visited = set()
self.res = 0
self.directions = [(0, 1), (0, -1), (-1, 0), (1, 0)]
def dfs(self, grid, i, j):
for dx, dy in self.directions:
x, y = i + dx, j + dy
if 0 <= x < len(grid) and 0 <= y < len(grid[0]):
if (x, y) not in self.visited and grid[x][y] == "1":
self.visited.add((x, y))
self.dfs(grid, x, y)
def numIslands(self, grid: List[List[str]]) -> int:
for i in range(len(grid)):
for j in range(len(grid[0])):
if (i, j) not in self.visited and grid[i][j] == "1":
self.res += 1
self.visited.add((i, j))
self.dfs(grid, i, j)
return self.res
Number of Islands
Given an m x n 2D binary grid grid which represents a map of '1's (land) and '0's (water), return the number of islands.
An island is surrounded by water and is formed by connecting adjacent lands horizontally or vertically. You may assume all four edges of the grid are all surrounded by water.
Example 1:
Input: grid = [ ["1","1","1","1","0"], ["1","1","0","1","0"], ["1","1","0","0","0"], ["0","0","0","0","0"] ] Output: 1
Example 2:
Input: grid = [ ["1","1","0","0","0"], ["1","1","0","0","0"], ["0","0","1","0","0"], ["0","0","0","1","1"] ] Output: 3
Constraints:
m == grid.lengthn == grid[i].length1 <= m, n <= 300grid[i][j]is'0'or'1'.