leetpycode/medium/maximum_number_of_fish_in_a_grid.py

31 lines
951 B
Python

# https://leetcode.com/problems/maximum-number-of-fish-in-a-grid
from typing import List
DIRS = [(-1, 0), (1, 0), (0, -1), (0, 1)]
class Solution:
def findMaxFish(self, grid: List[List[int]]) -> int:
r_size, c_size = len(grid), len(grid[0])
visited = [[False] * c_size for _ in range(r_size)]
max_fish = 0
def dfs(r, c):
if r < 0 or \
r >= r_size or \
c < 0 or \
c >= c_size or \
visited[r][c] or grid[r][c] == 0:
return 0
visited[r][c] = True
fish_count = grid[r][c]
for dr, dc in DIRS:
fish_count += dfs(r + dr, c + dc)
return fish_count
for r in range(r_size):
for c in range(c_size):
if grid[r][c] > 0 and not visited[r][c]:
max_fish = max(max_fish, dfs(r, c))
return max_fish