# 695-max-area-of-island Try it on leetcode ## Description

You are given an m x n binary matrix grid. An island is a group of 1's (representing land) connected 4-directionally (horizontal or vertical.) You may assume all four edges of the grid are surrounded by water.

The area of an island is the number of cells with a value 1 in the island.

Return the maximum area of an island in grid. If there is no island, return 0.

 

Example 1:

Input: grid = [[0,0,1,0,0,0,0,1,0,0,0,0,0],[0,0,0,0,0,0,0,1,1,1,0,0,0],[0,1,1,0,1,0,0,0,0,0,0,0,0],[0,1,0,0,1,1,0,0,1,0,1,0,0],[0,1,0,0,1,1,0,0,1,1,1,0,0],[0,0,0,0,0,0,0,0,0,0,1,0,0],[0,0,0,0,0,0,0,1,1,1,0,0,0],[0,0,0,0,0,0,0,1,1,0,0,0,0]]
Output: 6
Explanation: The answer is not 11, because the island must be connected 4-directionally.

Example 2:

Input: grid = [[0,0,0,0,0,0,0,0]]
Output: 0

 

Constraints:

## Solution(Python) ```Python class Solution: def maxAreaOfIsland(self, grid: List[List[int]]) -> int: return self.dfs(grid) # Time Compleixty: O(m*n) # Space complexity: O(m*n) def dfs(self, grid: List[List[int]]) -> int: seen = set() def area(r, c): if not (0 <= r < len(grid) and 0 <= c < len(grid[0]) and (r, c) not in seen and grid[r][c]): return 0 seen.add((r, c)) return (1 + area(r+1, c) + area(r-1, c) + area(r, c-1) + area(r, c+1)) return max(area(r, c) for r in range(len(grid)) for c in range(len(grid[0]))) # Time Compleixty: O(n^2) # Space complexity: O(n^2) def betterbruteforce(self, grid: List[List[int]]) -> int: m,n = len(grid), len(grid[0])if grid[0] else 0 if not n or not m: return 0 max_area = 0 dirs = [(1,0), (-1,0), (0,-1), (0,1)] def dfs(x,y, visited): res = 1 for dx, dy in dirs: x1,y1 = x+dx, y+dy if 0 <= x1 <= m-1 and 0 <= y1 <= n-1 and (x1,y1) not in visited and grid[i][j]: visited.add((x1,y1)) res += dfs(x1,y1, visited) else: continue return res visited = set() for i in range(m): for j in range(n): if grid[i][j] and (i,j) not in visited: visited.add((i,j)) max_area = max(max_area, dfs(i,j, visited)) return max_area ```