题目
解法1:BFS
这道题dfs和bfs当然写起来都差不多,不过bfs更直观一点,而且对于这道题来讲bfs更快。
- 有一点值得说一下,这边bfs和dfs统一不需要设置seen矩阵来保存。在访问到1的元素是直接修改让他变成0以此来标记即可
python代码如下:
class Solution:
def maxAreaOfIsland(self, grid: List[List[int]]) -> int:
def bfs(i,j):
area = 1
grid[i][j] = 0
q = collections.deque()
q.append((i,j))
dirs = [[0,1],[0,-1],[1,0],[-1,0]]
while q:
pos = q.popleft()
for d in dirs:
x = pos[0]+d[0]
y = pos[1]+d[1]
if x>=0 and x<len(grid) and y>=0 and y<len(grid[0]):
if grid[x][y]==1:
area+=1
grid[x][y] = 0
q.append((x,y))
return area
max_area = 0
for i in range(len(grid)):
for j in range(len(grid[0])):
if grid[i][j] == 1:
max_area = max(max_area,bfs(i,j))
return max_area
C++版本
class Solution {