楼主: 
dont   2024-08-28 15:51:211905. Count Sub Islands
## 思路
刚看到题目直觉是跑两次DFS (先标记grid1岛编号再检查grid2)
不过grid2涵盖多个岛的话, 中间一定会碰到海 (grid1[r][c]=0)
所以只要对grid2做一次DFS就好了
检查grid1[r][c]都为1就是sub island
## Complexity
Time, Space: O(MN)
## Code
```python
class Solution:
    def countSubIslands(self, grid1: List[List[int]], grid2: List[List[int]])
-> int:
        len_r, len_c = len(grid1), len(grid1[0])
        def dfs(r, c):
            res = grid1[r][c]
            grid2[r][c] = 0
            for dr, dc in (r+1, c), (r-1, c), (r, c+1), (r, c-1):
                if 0 <= dr < len_r and 0 <= dc < len_c and grid2[dr][dc]:
                    res &= dfs(dr, dc)
            return res
        res = 0
        for r in range(len_r):
            for c in range(len_c):
                if grid2[r][c]:
                    res += dfs(r, c)
        return res
```