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