LeetCode演算法題200 島嶼的個數解析

2021-09-11 22:56:17 字數 1705 閱讀 5711

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

示例 1:

輸入:

11110

11010

11000

00000

輸出: 1

示例 2:

輸入:

11000

11000

00100

00011

輸出: 3

這個題還是用dfs進行遍歷,遇到1且沒有遍歷過就搜尋它周圍所有的1。

c++源**:

class

solution}}

return res;

}void

dfs(vectorchar

>>

& grid, vectorbool

>>

& visited,

int x,

int y)

};

python3源**:

class

solution

:def

numislands

(self, grid: list[list[

str]])

->

int:

iflen

(grid)==0

orlen

(grid[0]

)==0:

return

0 m =

len(grid)

n =len(grid[0]

) res =

0 visited =[[

0for i in

range

(n)]

for j in

range

(m)]

for i in

range

(m):

for j in

range

(n):

if grid[i]

[j]==

'1'and visited[i]

[j]==0:

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

res +=

1return res

defdfs(self, grid, visited, x, y)

:if x<

0or x>=

len(grid)

:return

if y<

0or y>=

len(grid[0]

):return

if grid[x]

[y]!=

'1'or visited[x]

[y]==1:

return

visited[x]

[y]=

1 self.dfs(grid, visited, x+

1, y)

self.dfs(grid, visited, x-

1, y)

self.dfs(grid, visited, x, y+1)

self.dfs(grid, visited, x, y-

1)

演算法題 leetcode200 島嶼數量

題目描述 給定乙個由 1 陸地 和 0 水 組成的的二維網格,計算島嶼的數量。乙個島被水包圍,並且它是通過水平方向或垂直方向上相鄰的陸地連線而成的。你可以假設網格的四個邊均被水包圍。深度搜尋class solution return count public static void combine ...

leetcode 第200題 島嶼數量

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

泛洪演算法 LeetCode200

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