文巾解题 695. 岛屿的最大面积
Posted UQI-LIUWJ
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文巾解题 695. 岛屿的最大面积相关的知识,希望对你有一定的参考价值。
1 题目描述
2 解题思路
2.1 广搜
广搜使用队列实现
class Solution:
def maxAreaOfIsland(self, grid: List[List[int]]) -> int:
row=len(grid)
column=len(grid[0])
num=0
for i in range(row):
for j in range(column):
if(grid[i][j]==1):
tmp=1
grid[i][j]=0
lst=[(i,j)]
while(lst):
(x,y)=lst.pop(0)
for (i,j) in [(x-1,y),(x+1,y),(x,y+1),(x,y-1)]:
if(i>=0 and i <row and j>=0 and j<column):
if(grid[i][j]==1):
tmp+=1
grid[i][j]=0
lst.append((i,j))
num=max(num,tmp)
return(num)
2.2 深搜
深搜使用递归实现
这里定义了一个nonlocal变量tmp,变是当前区域岛屿的面积
如果我们发现了一块陆地,那么我们就把这块陆地代表的岛屿的所有陆地全部找到,计算这个岛屿的面积,然后看和当前最大的岛屿面积谁大
class Solution:
def maxAreaOfIsland(self, grid: List[List[int]]) -> int:
row=len(grid)
column=len(grid[0])
num=0
tmp=1
def dfs(x,y):
nonlocal tmp
for (i,j) in [(x-1,y),(x+1,y),(x,y+1),(x,y-1)]:
if(i>=0 and i <row and j>=0 and j<column):
if(grid[i][j]==1):
tmp+=1
grid[i][j]=0
dfs(i,j)
for i in range(row):
for j in range(column):
if(grid[i][j]==1):
grid[i][j]=0
tmp=1
dfs(i,j)
num=max(num,tmp)
return(num)
以上是关于文巾解题 695. 岛屿的最大面积的主要内容,如果未能解决你的问题,请参考以下文章