File tree Expand file tree Collapse file tree 1 file changed +50
-0
lines changed Expand file tree Collapse file tree 1 file changed +50
-0
lines changed Original file line number Diff line number Diff line change 1+ class Solution :
2+ def numIslands (self , grid : List [List [str ]]) -> int :
3+ # TC : O(n*m)
4+ # SC : O(n*m)
5+
6+ m , n = len (grid ), len (grid [0 ])
7+ dx = [- 1 ,1 ,0 ,0 ]
8+ dy = [0 ,0 ,- 1 ,1 ]
9+
10+ def in_range (r , c ):
11+ if r < 0 or c < 0 or r >= m or c >= n :
12+ return False
13+ return True
14+
15+ # DFS Way
16+
17+ def dfs (r , c ):
18+ grid [r ][c ] = 'x'
19+
20+ for i in range (4 ):
21+ nr , nc = r + dx [i ], c + dy [i ]
22+ if not in_range (nr , nc ) or grid [nr ][nc ] != '1' :
23+ continue
24+ dfs (nr , nc )
25+
26+ # BFS Way
27+ from collections import deque
28+ def bfs (r , c ):
29+ grid [r ][c ] = 'x'
30+ queue = deque ()
31+ queue .append ([r , c ])
32+
33+ while queue :
34+ cr , cc = queue .popleft ()
35+ for i in range (4 ):
36+ nr , nc = cr + dx [i ], cc + dy [i ]
37+
38+ if not in_range (nr , nc ) or grid [nr ][nc ] != '1' :
39+ continue
40+ grid [nr ][nc ] = 'x'
41+ queue .append ([nr , nc ])
42+
43+ ret = 0
44+ for i in range (m ):
45+ for j in range (n ):
46+ if grid [i ][j ] == '1' :
47+ bfs (i , j )
48+ ret += 1
49+ return ret
50+
You can’t perform that action at this time.
0 commit comments