通行证
- 积分
- 639
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2016-6-30
- 最后登录
- 1970-1-1
|
主楼两段代码的缩进被论坛吞了(纯文本发布行首空格会被吃掉),把格式正确的版本贴在这里:
- def numIslands(grid):
- if not grid:
- return 0
- m, n = len(grid), len(grid[0])
- ans = 0
- def dfs(i, j):
- if i < 0 or i >= m or j < 0 or j >= n or grid[i][j] != '1':
- return
- grid[i][j] = '0' # 沉岛
- dfs(i + 1, j)
- dfs(i - 1, j)
- dfs(i, j + 1)
- dfs(i, j - 1)
- for i in range(m):
- for j in range(n):
- if grid[i][j] == '1':
- ans += 1
- dfs(i, j)
- return ans
复制代码
- from collections import deque
- def numIslands_bfs(grid):
- if not grid:
- return 0
- m, n = len(grid), len(grid[0])
- ans = 0
- for i in range(m):
- for j in range(n):
- if grid[i][j] != '1':
- continue
- ans += 1
- q = deque([(i, j)])
- grid[i][j] = '0'
- while q:
- x, y = q.popleft()
- for dx, dy in ((1, 0), (-1, 0), (0, 1), (0, -1)):
- nx, ny = x + dx, y + dy
- if 0 <= nx < m and 0 <= ny < n and grid[nx][ny] == '1':
- grid[nx][ny] = '0'
- q.append((nx, ny))
- return ans
复制代码 |
|