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.
Examples
Example 1:
$$ \begin{bmatrix} \colorbox{blue}{0} & \colorbox{blue}{0} & \colorbox{orange}{1} & \colorbox{blue}{0} & \colorbox{blue}{0} & \colorbox{blue}{0} & \colorbox{blue}{0} & \colorbox{orange}{1} & \colorbox{blue}{0} & \colorbox{blue}{0} & \colorbox{blue}{0} & \colorbox{blue}{0} & \colorbox{blue}{0} \\ \colorbox{blue}{0} & \colorbox{blue}{0} & \colorbox{blue}{0} & \colorbox{blue}{0} & \colorbox{blue}{0} & \colorbox{blue}{0} & \colorbox{blue}{0} & \colorbox{orange}{1} & \colorbox{orange}{1} & \colorbox{orange}{1} & \colorbox{blue}{0} & \colorbox{blue}{0} & \colorbox{blue}{0} \\ \colorbox{blue}{0} & \colorbox{orange}{1} & \colorbox{orange}{1} & \colorbox{blue}{0} & \colorbox{orange}{1} & \colorbox{blue}{0} & \colorbox{blue}{0} & \colorbox{blue}{0} & \colorbox{blue}{0} & \colorbox{blue}{0} & \colorbox{blue}{0} & \colorbox{blue}{0} & \colorbox{blue}{0} \\ \colorbox{blue}{0} & \colorbox{orange}{1} & \colorbox{blue}{0} & \colorbox{blue}{0} & \colorbox{orange}{1} & \colorbox{orange}{1} & \colorbox{blue}{0} & \colorbox{blue}{0} & \colorbox{orange}{1} & \colorbox{blue}{0} & \colorbox{orange}{1} & \colorbox{blue}{0} & \colorbox{blue}{0} \\ \colorbox{blue}{0} & \colorbox{orange}{1} & \colorbox{blue}{0} & \colorbox{blue}{0} & \colorbox{orange}{1} & \colorbox{orange}{1} & \colorbox{blue}{0} & \colorbox{blue}{0} & \colorbox{orange}{1} & \colorbox{orange}{1} & \colorbox{orange}{1} & \colorbox{blue}{0} & \colorbox{blue}{0} \\ \colorbox{blue}{0} & \colorbox{blue}{0} & \colorbox{blue}{0} & \colorbox{blue}{0} & \colorbox{blue}{0} & \colorbox{blue}{0} & \colorbox{blue}{0} & \colorbox{blue}{0} & \colorbox{blue}{0} & \colorbox{blue}{0} & \colorbox{orange}{1} & \colorbox{blue}{0} & \colorbox{blue}{0} \\ \colorbox{blue}{0} & \colorbox{blue}{0} & \colorbox{blue}{0} & \colorbox{blue}{0} & \colorbox{blue}{0} & \colorbox{blue}{0} & \colorbox{blue}{0} & \colorbox{orange}{1} & \colorbox{orange}{1} & \colorbox{orange}{1} & \colorbox{blue}{0} & \colorbox{blue}{0} & \colorbox{blue}{0} \\ \colorbox{blue}{0} & \colorbox{blue}{0} & \colorbox{blue}{0} & \colorbox{blue}{0} & \colorbox{blue}{0} & \colorbox{blue}{0} & \colorbox{blue}{0} & \colorbox{orange}{1} & \colorbox{orange}{1} & \colorbox{blue}{0} & \colorbox{blue}{0} & \colorbox{blue}{0} & \colorbox{blue}{0} \end{bmatrix} $$
| |
Example 2:
| |
Solution
Note that, it is more like perimeter than area.
Method 1 - DFS with Array Modification
Code
| |
Complexity
- ⏰ Time complexity:
O(m*n) - 🧺 Space complexity:
O(min(m, n))assuming recursion stack in thedfs()function. %%
Method 2 - DFS with Visited Set
%%