Re: [閒聊] 每日leetcode
https://leetcode.com/problems/number-of-islands/description
200. Number of Islands
給你一個二維陣列 1 表示陸地 0 表示海水,相連的陸地是一的島嶼,求出有幾個島。
思路:
1.找到 grid[i][j] == 1 的格子就把島嶼數量+1,並以該點為中心 dfs 附近相鄰的陸地
標記為已經走過。
2.返回島嶼數量。
py code:
------------------------------------------------
class Solution:
def numIslands(self, grid: List[List[str]]) -> int:
res = 0
m, n = len(grid), len(grid[0])
for i in range(m):
for j in range(n):
if grid[i][j] == '1':
self.dfs(grid, i, j)
res += 1
return res
def dfs(self, grid: List[List[str]], y: int, x: int):
m, n = len(grid), len(grid[0])
if y < 0 or y == m or x < 0 or x == n or grid[y][x] != '1':
return
grid[y][x] = '-1'
self.dfs(grid, y + 1, x)
self.dfs(grid, y - 1, x)
self.dfs(grid, y, x + 1)
self.dfs(grid, y, x - 1)
------------------------------------------------
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 101.138.137.43 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1713488884.A.C33.html
→
04/19 09:19,
1年前
, 1F
04/19 09:19, 1F
推
04/19 09:47,
1年前
, 2F
04/19 09:47, 2F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 133 之 1548 篇):