# Max Area of Island
[Max Area of Island](https://leetcode.com/problems/max-area-of-island/)
- In order to "explore" an island, we need [[recursion]]! Recursively explore
the four directions.
- We need to keep track of the lands we have traversed.
- In [[python|Python], it's easier to use [[dictionary]].
- In [[c|C], use [[array]] instead.
What we could learn from here:
- To get good understanding of a field, of a place, a potential strategy is to
recursively traverse it.
- To spend our time wisely, we need to reflect frequently, keep track of what we
have done and seen.
```python
class Solution:
def maxAreaOfIsland(self, grid: List[List[int]]) -> int:
def area(x, y):
if x < 0 or y < 0 or x >= len(grid) or y >= len(grid[x]):
return 0
if not grid[x][y] or seen[x][y]: return 0
seen[x][y] = 1;
area_l = area(x, y - 1);
area_r = area(x, y + 1);
area_u = area(x - 1, y);
area_d = area(x + 1, y);
return 1 + area_l + area_r + area_u + area_d
maxArea = 0
seen = [[0] * len(grid[i]) for i in range(len(grid))]
for i in range(len(grid)):
for j in range(len(grid[i])):
curArea = area(i, j)
if maxArea < curArea: maxArea = curArea
return maxArea
```
You can't even deal with [[c-array|2D array in C]]...