In this post, we are going to solve the** 695. Max Area of Island** problem of Leetcode. This problem **695. Max Area of Island** is a Leetcode **medium **level problem. Let’s see the code, **695. Max Area of Island****– Leetcode Solution**.

**Problem**

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**

`m == grid.length`

`n == grid[i].length`

`1 <= m, n <= 50`

`grid[i][j] is either 0 or 1.`

Now, let’s see the code of **695. Max Area of Island** – Leetcode Solution.

**Max Area of Island – Leetcode Solution**

**Max Area of Island – Leetcode Solution**

**695. Max Area of Island** – Solution in Java

**– Solution in Java**

**695. Max Area of Island**class Solution { public int coverIsland(int[][] grid, int i, int j,int[][] visited){ if(i<0 || i >= grid.length || j < 0 || j >= grid[0].length || grid[i][j] == 0) return 0; if(visited[i][j] == 1)return 0; visited[i][j] = 1; return( 1 + coverIsland(grid,i,j-1,visited)+ coverIsland(grid,i-1,j,visited)+ coverIsland(grid,i,j+1,visited)+ coverIsland(grid,i+1,j,visited) ); } public int maxAreaOfIsland(int[][] grid) { int maxArea = 0; int[][] visited = new int[grid.length][grid[0].length]; for(int i=0;i<grid.length;i++){ for(int j=0;j<grid[0].length;j++){ if(grid[i][j] == 1 && visited[i][j] == 0) maxArea = Math.max(maxArea,coverIsland(grid,i,j,visited)); } } return maxArea; } }

**695. Max Area of Island** – Solution in C++

**C++**

**– Solution in****695. Max Area of Island**class Solution { public: int maxAreaOfIsland(vector<vector<int>>& grid) { int max_area = 0; for(int i = 0; i < grid.size(); i++) for(int j = 0; j < grid[0].size(); j++) if(grid[i][j] == 1)max_area = max(max_area, AreaOfIsland(grid, i, j)); return max_area; } int AreaOfIsland(vector<vector<int>>& grid, int i, int j){ if( i >= 0 && i < grid.size() && j >= 0 && j < grid[0].size() && grid[i][j] == 1){ grid[i][j] = 0; return 1 + AreaOfIsland(grid, i+1, j) + AreaOfIsland(grid, i-1, j) + AreaOfIsland(grid, i, j-1) + AreaOfIsland(grid, i, j+1); } return 0; } };

**695. Max Area of Island** **– Solution in **Python

**695. Max Area of Island****Python**

**– Solution in**def dfs(i,j,grid): if i < 0 or j < 0 or i >= len(grid) or j >= len(grid[i]) or grid[i][j] == 0: return 0 grid[i][j] = 0 up = dfs(i,j+1,grid) down = dfs(i,j-1,grid) left = dfs(i-1,j,grid) right = dfs(i+1,j,grid) return up + down + left + right + 1 class Solution(object): def maxAreaOfIsland(self, grid): """ :type grid: List[List[int]] :rtype: int """ count = 0 for i in range(len(grid)): for j in range(len(grid[i])): if grid[i][j] == 1: count = max(dfs(i,j,grid), count) return count

**Note:** This problem **695. Max Area of Island** is generated by **Leetcode **but the solution is provided by **CodingBroz**. This tutorial is only for **Educational** and **Learning** purpose.