-
发表于 2024.04.15
-
DFS往四个方面扩展面积即可,使用一个
visited
数组来维护已经访问的信息,如果遍历到已经visit的节点则不再统计。class Solution: moves = [ (-1, 0), (0, -1), (1, 0), (0, 1) ] def maxAreaOfIsland(self, grid: List[List[int]]) -> int: m = len(grid) n = len(grid[0]) visited = [[False] * n for _ in range(m)] def dfs(x: int, y: int) -> int: nonlocal visited if grid[y][x] == 0: return 0 result = 1 for move in self.moves: nx = x + move[0] ny = y + move[1] if 0 <= nx < n and 0 <= ny < m and not visited[ny][nx]: visited[ny][nx] = True result += dfs(nx, ny) return result r = 0 for i in range(m): for j in range(n): if grid[i][j] and not visited[i][j]: visited[i][j] = True r = max(r, dfs(j, i)) return r
- LC 题目链接
-