首页 > 其他 > 详细

leetcode1905 统计子岛屿

时间:2021-06-22 22:24:11      阅读:29      评论:0      收藏:0      [点我收藏+]

思路:

在grid2中bfs/dfs寻找岛屿的同时判断这个岛屿对应的位置在grid1中是否全部为1。

实现:

 1 class Solution
 2 {
 3 public:
 4     int dx[4] = {0, 1, 0, -1};
 5     int dy[4] = {1, 0, -1, 0};
 6     bool dfs(int x, int y, vector<vector<int>>& g1, vector<vector<int>>& g2, vector<vector<bool>>& vis)
 7     {
 8         bool res = true;
 9         if (g1[x][y] == 0) res = false; 
10         vis[x][y] = true;
11         int n = g2.size(), m = g2[0].size();
12         for (int i = 0; i < 4; i++)
13         {
14             int nx = x + dx[i], ny = y + dy[i];
15             if (nx >= 0 and nx < n and ny >= 0 and ny < m and g2[nx][ny] == 1 and !vis[nx][ny])
16             {
17                 res &= dfs(nx, ny, g1, g2, vis);
18             }
19         }
20         return res;
21     }
22     int countSubIslands(vector<vector<int>>& grid1, vector<vector<int>>& grid2)
23     {
24         int n = grid1.size(), m = grid1[0].size();
25         vector<vector<bool>> vis(n, vector<bool>(m, false));
26         int res = 0;
27         for (int i = 0; i < n; i++)
28         {
29             for (int j = 0; j < m; j++)
30             {
31                 if (grid2[i][j] == 1 and !vis[i][j])
32                 {
33                     res += dfs(i, j, grid1, grid2, vis);
34                 }
35             }
36         }
37         return res;
38     }
39 }

leetcode1905 统计子岛屿

原文:https://www.cnblogs.com/wangyiming/p/14920400.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!