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