文巾解题 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. 岛屿的最大面积的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 695. 岛屿的最大面积c++/java详细题解

695. 岛屿的最大面积

695. 岛屿的最大面积(dfs)

leetcode695.岛屿的最大面积

Leetcode 695.岛屿的最大面积

Python BFS 695. 岛屿的最大面积