#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param grid int整型二维数组
# @return int整型
#
class Solution:
    def maxAreaIsland(self, grid: List[List[int]]) -> int:
        # write code here
        if not grid or not grid[0]:
            return 0
        n = len(grid)
        m = len(grid[0])
        mx = 0
        # 外侧 遍历mxn 每个点,以此为dfs 搜素的起点 ,比较递归的返回值为1的个数
        # 定义 dfs 遍历当前(x,y) 的周围
        def dfs(grid, row, col):
            # 过滤超出边界和为0 的
            if row < 0 or row >= n or col < 0 or col >= m or grid[row][col] == 0:
                return 0
            grid[row][col] = 0  # 遍历过设置为0
            count = 1
            count += dfs(grid, row + 1, col)
            count += dfs(grid, row - 1, col)
            count += dfs(grid, row, col + 1)
            count += dfs(grid, row, col - 1)
            return count

        for i in range(n):
            for j in range(m):
                if grid[i][j] == 1:
                    mx = max(mx, dfs(grid, i, j))
        return mx