max-area-of-islandV1.py (866B)
1 class Solution: 2 def maxAreaOfIsland(self, grid: List[List[int]]) -> int: 3 4 max_size = 0 5 6 for y in range(len(grid)): 7 for x in range(len(grid[y])): 8 if grid[y][x] == 1: 9 current = count_and_mark(x, y, grid) 10 11 if current > max_size: 12 max_size = current 13 14 return max_size 15 16 17 def count_and_mark(x_pos, y_pos, grid) -> int: 18 if grid[y_pos][x_pos] != 1: 19 return 0 20 21 count = 1 22 grid[y_pos][x_pos] = -1 23 24 if x_pos > 0: 25 count += count_and_mark(x_pos - 1, y_pos, grid) 26 if y_pos > 0: 27 count += count_and_mark(x_pos, y_pos - 1, grid) 28 29 if y_pos < len(grid) - 1: 30 count += count_and_mark(x_pos, y_pos + 1, grid) 31 if x_pos < len(grid[0]) - 1: 32 count += count_and_mark(x_pos + 1, y_pos, grid) 33 34 return count