Leetcode200岛屿数量
bfs
class Solution :
def numIslands ( self, grid) :
if not grid or not grid[ 0 ] :
return 0
self. m, self. n = len ( grid) , len ( grid[ 0 ] )
islands = 0
for row in range ( self. m) :
for col in range ( self. n) :
if grid[ row] [ col] == "1" :
islands += 1
grid[ row] [ col] = '0'
self. bfs( grid, row, col)
return islands
def bfs ( self, grid, row, col) :
queue = collections. deque( [ ( row, col) ] )
while queue:
row, col = queue. popleft( )
for x, y in [ ( row - 1 , col) , ( row + 1 , col) , ( row, col - 1 ) , ( row, col + 1 ) ] :
if 0 <= x < self. m and 0 <= y < self. n and grid[ x] [ y] == "1" :
queue. append( ( x, y) )
grid[ x] [ y] = '0'
dfs
class Solution :
def numIslands ( self, grid) :
if not grid or not grid[ 0 ] :
return 0
self. m, self. n = len ( grid) , len ( grid[ 0 ] )
islands = 0
for row in range ( self. m) :
for col in range ( self. n) :
if grid[ row] [ col] == "1" :
islands += 1
self. dfs( grid, row, col)
return islands
def dfs ( self, grid, row, col) :
grid[ row] [ col] = "0"
for x, y in [ ( row - 1 , col) , ( row + 1 , col) , ( row, col - 1 ) , ( row, col + 1 ) ] :
if 0 <= x < self. m and 0 <= y < self. n and grid[ x] [ y] == "1" :
self. dfs( grid, x, y)