LeetCode200—Number of Islands

﹏ヽ暗。殇╰゛Y 2022-09-21 13:12 245阅读 0赞

LeetCode200—Number of Islands

原题

https://leetcode.com/problems/number-of-islands/

Given a 2d grid map of ‘1’s (land) and ‘0’s (water), count the number of islands. An island is surrounded by water and is formed by connecting adjacent lands horizontally or vertically. You may assume all four edges of the grid are all surrounded by water.

Example 1:

11110
11010
11000
00000
Answer: 1

Example 2:

11000
11000
00100
00011
Answer: 3

其实跟之前做的AMCAT—countHomes是一样,就是对查找点的4领域进行dfs,并记录dfs调用的次数。


代码

  1. class Solution {
  2. private:
  3. void dfs(vector<vector<char>>&grid,int i,int j)
  4. {
  5. if (grid[i][j] == '1')
  6. {
  7. grid[i][j] = '0';
  8. if (i - 1 >= 0)
  9. dfs(grid, i - 1, j);
  10. if (j- 1 >= 0)
  11. dfs(grid, i , j-1);
  12. if (i +1 < grid.size())
  13. dfs(grid, i + 1, j);
  14. if (j + 1 < grid[0].size())
  15. dfs(grid, i, j+1);
  16. }
  17. }
  18. public:
  19. int numIslands(vector<vector<char>>& grid)
  20. {
  21. int res = 0;
  22. for (int i = 0; i < grid.size(); i++)
  23. {
  24. for (int j = 0; j < grid[0].size(); j++)
  25. {
  26. if (grid[i][j] == '1')
  27. {
  28. res++;
  29. dfs(grid, i, j);
  30. }
  31. }
  32. }
  33. return res;
  34. }
  35. };

发表评论

表情:
评论列表 (有 0 条评论,245人围观)

还没有评论,来说两句吧...

相关阅读