1. 程式人生 > >leetcode 島嶼的個數 python

leetcode 島嶼的個數 python

1 class Solution: 2 def numIslands(self, grid): 3 """ 4 :type grid: List[List[str]] 5 :rtype: int 6 """ 7 # 如果是空圖 返回沒有陸地 8 if not grid: 9 return 0 10 # 把原圖改變一下 四周加上一圈"0" 防止出界 方便遍歷 11 w, h = len(grid[0]), len(grid)
12 new_grid = [["0" for i in range(w + 2)]] 13 for g in grid: 14 new_grid.append(["0"] + g + ["0"]) 15 new_grid.append(["0" for i in range(w + 2)]) 16 17 num = 0 # 記錄陸地數量 18 19 # 遍歷除了周圍的"0" 中間的部分 20 for i in range(1, h+1): 21 for
j in range(1, w+1): 22 if new_grid[i][j] == "1": # 如果是陸地 就進入深度遍歷 23 num += 1 24 self.deep_search(i, j, new_grid) 25 26 return num 27 28 29 def deep_search(self, i, j, grid): 30 """如果當前是陸地,把當前結點標記遍歷過,並分別看左右上下四個位置
""" 31 if grid[i][j] == "0": 32 return 33 grid[i][j] = "0" 34 self.deep_search(i-1,j,grid) 35 self.deep_search(i,j-1,grid) 36 self.deep_search(i,j+1,grid) 37 self.deep_search(i+1,j,grid) 38