题目如下
数据范围
示例
本题只要在遍历图二岛屿的时候检查图一对应位置是否是陆地即可。
通过代码
class Solution {
public:bool su = true;int countSubIslands(vector<vector<int>>& grid1, vector<vector<int>>& grid2) {int n = grid1.size();int m = grid1[0].size();int ans = 0;vector<vector<bool>> v(n,vector<bool>(m,false));for(int i = 0;i < n;i++){for(int j = 0;j < m;j++){if(grid2[i][j] == 1 && !v[i][j]){su = true;dfs(grid1,grid2,v,i,j);if(su){ans++;}}}}return ans;}void dfs(vector<vector<int>>& g1, vector<vector<int>>& g2,vector<vector<bool>> &v,int x,int y){if(x < 0 || x >= g1.size() || y < 0 || y >= g1[0].size() || v[x][y] || g2[x][y] == 0)return;v[x][y] = true;if(g1[x][y] == 0){su = false;}dfs(g1,g2,v,x - 1,y);dfs(g1,g2,v,x,y - 1);dfs(g1,g2,v,x + 1,y);dfs(g1,g2,v,x,y + 1);}
};