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