CODE

class Solution:
    def maxAreaOfIsland(self, grid: List[List[int]]) -> int:
        dir = [(1, 0), (-1, 0), (0, 1), (0, -1)]
        
        def sink_island(r, c):
            if not (0 <= r < len(grid)) or not (0 <= c < len(grid[0])):
                return 0
            if grid[r][c] == 0:
                return 0
                
            grid[r][c] = 0
            area = 1
            for nr, nc in dir:
                area += sink_island(r + nr, c + nc)
            return area
        
        max_area = 0
        for r in range(len(grid)):
            for c in range(len(grid[0])):
                if grid[r][c] == 1:
                    max_area = max(max_area, sink_island(r, c))
                    
        return max_area
                    
        

Last updated