200. Number of Islands Posted on 2023-12-24 Edited on 2024-01-09 https://leetcode.com/problems/number-of-islands/ Solution1: DFS 123456789101112131415161718class Solution: def numIslands(self, G: List[List[str]]) -> int: def f(i,j): if 0<=i<M and 0<=j<N and G[i][j]=='1': G[i][j]='0' f(i-1,j) f(i+1,j) f(i,j-1) f(i,j+1) M=len(G) N=len(G[0]) ans=0 for i in range(M): for j in range(N): if G[i][j]=='1': f(i,j) ans+=1 return ans Solution2: BFS 1234567891011121314151617181920212223class Solution: def numIslands(self, G: List[List[str]]) -> int: def f(i,j): nonlocal Q,G for i,j in [(i+1,j),(i-1,j),(i,j+1),(i,j-1)]: if 0<=i<M and 0<=j<N and G[i][j]=='1': G[i][j]=0 Q.append((i,j)) M=len(G) N=len(G[0]) ans=0 Q=deque() for i in range(M): for j in range(N): if G[i][j]=='1': ans+=1 G[i][j]='0' Q.append((i,j)) while Q: x,y=Q.popleft() f(x,y) return ans