class Solution:
    def findFarmland(self, land: List[List[int]]) -> List[List[int]]:
        m, n = len(land), len(land[0])
        min_r, min_c, max_r, max_c = 0, 0, 0, 0
        seen = set()
        result = []
 
        def dfs(r, c):
            nonlocal min_r, min_c, max_r, max_c
 
            if (r, c) in seen or land[r][c] != 1:
                return
            
            seen.add((r, c))
 
            min_r, min_c = min(r, min_r), min(c, min_c)
            max_r, max_c = max(r, max_r), max(c, max_c)
 
            for nr, nc in [(r + 1, c), (r - 1, c), (r, c + 1), (r, c - 1)]:
                if 0 <= nr < m and 0 <= nc < n and land[nr][nc] == 1:
                    dfs(nr, nc)
        
        for r in range(m):
            for c in range(n):
                if (r, c) not in seen and land[r][c] == 1:
                    min_r, min_c, max_r, max_c = r, c, r, c
                    dfs(r, c)
                    result.append([min_r, min_c, max_r, max_c])
        
        return result

Complexity

Time:
Space:

Notes

In a given group or hectare according to problem description, the top-left corner will always be and bottom-right will always be .