# Max Area of Island – Leetcode Solution

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

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

```class Solution {

public int coverIsland(int[][] grid, int i, int j,int[][] visited){

if(i<0 || i >= grid.length || j < 0 || j >= grid.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.length];
for(int i=0;i<grid.length;i++){
for(int j=0;j<grid.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++

```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.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.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

```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.