Max Area of Island (Leetcode 695)

Problem Link: https://leetcode.com/problems/max-area-of-island/

class Solution:
    def maxAreaOfIsland(self, grid: List[List[int]]) -> int:
        
        def dfs(grid, i, j, m, n):
            
            if(0<=i<m and 0<=j<n and grid[i][j]==1):
                
                grid[i][j]=0
                
                l=dfs(grid,i-1,j,m,n)
                r=dfs(grid,i+1,j,m,n)
                t=dfs(grid,i,j-1,m,n)
                b=dfs(grid,i,j+1,m,n)
                
                # 1 for the current position
                return 1+l+r+t+b
            
            return 0
        
        maxx=0
        m=len(grid)
        n=len(grid[0])
        for i in range(m):
            for j in range(n):
                if(grid[i][j]==1):
                    temp=dfs(grid,i,j,m,n)
                    maxx=max(maxx,temp)
        
        return maxx

With Visited Matrix:

def maxAreaOfIsland(self, grid: List[List[int]]) -> int:
        def dfs(i,j):

            if(i<0 or j<0 or i>=m or j>=n or visited[i][j]==1 or grid[i][j]==0):
                return 0

            # visited[i][j]=1 should be here.
            visited[i][j]=1
            l=dfs(i-1,j)
            r=dfs(i+1,j)
            u=dfs(i,j-1)
            d=dfs(i,j+1)
            # visited[i][j]=1 should not be here.
            return 1+l+r+u+d


        m=len(grid)
        n=len(grid[0])
        visited=[[0 for i in range(n)] for j in range(m)]
        ans=0
        for i in range(m):
            for j in range(n):
                if(grid[i][j]==1 and visited[i][j]==0):
                    ans=max(ans,dfs(i,j))
        return ans

Last updated