class Solution(object):
    def dfs(self, grid,i,j):
        #设定边界条件
        if i<0 or j<0 or i==len(grid) or j==len(grid[0]) or grid[i][j]!=1:
            return 0
        #对于已经找的岛屿,标记一下,以防止重复查找
        grid[i][j] = 2
        #递归的寻找上下左右是否存在岛屿
        return self.dfs(grid,i-1,j)+self.dfs(grid,i,j-1)+self.dfs(grid,i+1,j)+self.dfs(grid,i,j+1)+1

    def maxAreaOfIsland(self, grid):
        """
        :type grid: List[List[int]]
        :rtype: int
        """
        max_area = 0
        for i in range(len(grid)):
            for j in range(len(grid[0])):
                temp = self.dfs(grid,i,j)
                if max_area < temp:
                    max_area = temp
        return max_area