This commit is contained in:
parent
13d43f7baf
commit
b50b1e3919
1 changed files with 31 additions and 0 deletions
31
medium/maximum_number_of_fish_in_a_grid.py
Normal file
31
medium/maximum_number_of_fish_in_a_grid.py
Normal file
|
|
@ -0,0 +1,31 @@
|
||||||
|
# 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
|
||||||
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue