LeetCode 200 島嶼的個數

2022-04-29 17:09:14 字數 1247 閱讀 9178

題目

給定乙個由 '1'(陸地)和 '0'(水)組成的的二維網格,計算島嶼的數量。乙個島被水包圍,並且它是通過水平方向或垂直方向上相鄰的陸地連線而成的。你可以假設網格的四個邊均被水包圍。

示例 1:輸入:

11110

11010

11000

00000

輸出: 1

示例 2:輸入:

11000

11000

00100

00011

輸出: 3

思路

dfs,深度遍歷搜尋

visited記錄遍歷過的陸地

**

class solution:

def numislands(self, grid: list[list[str]]) -> int:

if len(grid) == 0:

return 0

#visited全部初始化為0

row, col = len(grid), len(grid[0])

visited = [[0 for x in range(0, col)] for y in range(0, row)]

count=0

for i in range(0,row):

for j in range(0,col):

if visited[i][j]==0 and grid[i][j]=='1':

self.dfs(grid,i,j,visited)

count += 1

return count

def dfs(self, grid, i, j, visited):

if i < 0 or i >= len(grid):

return

if j < 0 or j >= len(grid[0]):

return

if grid[i][j]=='0' or visited[i][j]==1:

return

visited[i][j] = 1 #遍歷過的地方置為1

#上下左右四個方向遍歷

self.dfs(grid, i-1, j, visited)

self.dfs(grid, i+1, j, visited)

self.dfs(grid, i, j-1, visited)

self.dfs(grid, i, j+1, visited)

leetcode200 島嶼個數

對方格中的每乙個點為起點進行遍歷。如果找到乙個為1的點,結果就更新。以該點為中心,搜尋四周的點 搜尋流程 如果越界,返回 如果是0,返回 向四周搜尋class solution object def numislands self,grid type grid list list str rtype...

LeetCode 200 島嶼數量

給定乙個由 1 陸地 和 0 水 組成的的二維網格,計算島嶼的數量。乙個島被水包圍,並且它是通過水平方向或垂直方向上相鄰的陸地連線而成的。你可以假設網格的四個邊均被水包圍。示例 1 輸入 11110 11010 11000 00000輸出 1 示例 2 輸入 11000 11000 00100 00...

leetcode200 島嶼數量

可以遍歷矩陣中的每個位置,如果遇到1就將與其相連的一片1都感染成2 dfs 並自增島數量。class solution object def numislands self,grid type grid list list str rtype int res 0 if not grid return...