lechuck
Senior Member
Python:
class Solution:
def findFarmland(self, land: List[List[int]]) -> List[List[int]]:
ans = []
m = len(land)
n = len(land[0])
dirs = [(1, 0), (0, 1), (-1, 0), (0, -1)]
def dfs(row, col, id):
if row < 0 or col < 0 or row >= m or col >= n or land[row][col] != 1:
return
land[row][col] = 2 # visited
ans[id][0] = min(ans[id][0], row)
ans[id][1] = min(ans[id][1], col)
ans[id][2] = max(ans[id][2], row)
ans[id][3] = max(ans[id][3], col)
for i, j in dirs:
dfs(row + i, col + j, id)
for row in range(m):
for col in range(n):
if land[row][col] == 1:
ans.append([row, col, row, col])
dfs(row, col, len(ans) - 1)
return ans