對方格中的每乙個點為起點進行遍歷。
如果找到乙個為1的點,結果就更新。
以該點為中心,搜尋四周的點
搜尋流程:
如果越界,返回
如果是0, 返回
向四周搜尋
class solution(object):
def numislands(self, grid):
""":type grid: list[list[str]]
:rtype: int
"""if len(grid) == 0:
return 0
ans = 0
row = len(grid)
col = len(grid[0])
for i in range(row):
for j in range(col):
print(i, j)
if grid[i][j] == "0":
continue
else:
ans += 1
self.helper(grid, i, j, row, col)
return ans
def helper(self, grid, i, j, m, n):
if i < 0 or i >= m or j < 0 or j >= n :
return
if grid[i][j] == "0":
return
grid[i][j] = "0"
self.helper(grid, i+1, j, m, n)
self.helper(grid, i, j+1, m, n)
self.helper(grid, i-1, j, m, n)
self.helper(grid, i, j-1, m, n)
leetcode 200島嶼的個數
主要考察圖搜尋 方法一 染色法,時間o mn 遍歷一遍,再通過bfs或dfs將所有臨近島嶼染色,使用dfs時將numislands中的bfs換成dfs即可 遍歷所有的點 只要遇見陸地 1 投放1枚原子彈,衝擊波以bfs或dfs的形式向外擴散,使得自身及所有相鄰區域全部夷為平地 最終遍歷結束,原子彈使...
LeetCode 200 島嶼的個數
題目 給定乙個由 1 陸地 和 0 水 組成的的二維網格,計算島嶼的數量。乙個島被水包圍,並且它是通過水平方向或垂直方向上相鄰的陸地連線而成的。你可以假設網格的四個邊均被水包圍。示例 1 輸入 11110 11010 11000 00000 輸出 1示例 2 輸入 11000 11000 00100...
LeetCode 200 島嶼的個數
給定乙個由 1 陸地 和 0 水 組成的的二維網格,計算島嶼的數量。乙個島被水包圍,並且它是通過水平方向或垂直方向上相鄰的陸地連線而成的。你可以假設網格的四個邊均被水包圍。示例 1 輸入 11110 11010 11000 00000 輸出 1示例 2 輸入 11000 11000 00100 00...