当前位置: 首页 > article >正文

LeetCode HOT100系列题解之岛屿数量(10/100)

 题目:200. 岛屿数量 - 力扣(LeetCode)

题解:是一个非常裸的Floodfill问题来求解连通块个数,那么可以想到使用DFS或者BFS来遍历解决。当该点为1时,即对上下左右四个位置遍历,直到周围全为‘0’点。

class Solution {
public:
    const int dir[4][2] = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};
    void bfs(vector<vector<char>>& grid,int x, int y, const int n, const int m)
    {
        queue<pair<int,int>> q;
        q.push({x, y});
        while(q.size())
        {
            auto t = q.front();
            q.pop();

            for(int i = 0; i < 4; i ++)
            {
                int x = t.first + dir[i][0];
                int y = t.second + dir[i][1];
                if(x < 0 || x >= n || y < 0 || y >= m) continue;
                if(grid[x][y] == '0') continue;
                grid[x][y] = '0';
                q.push({x, y});
            }
        }
      
    }
    int numIslands(vector<vector<char>>& grid) {
        vector<vector<int>> directions = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};
        const int n = grid.size();
        const int m = grid[0].size();
        int ans = 0;
    
        for(int i = 0; i < n; i ++)
            for(int j = 0; j < m; j ++)
                if(grid[i][j] == '1')
                {
                    bfs(grid, i, j,n, m);
                    ans ++;
                }
        return ans;
    }
};

http://www.kler.cn/a/597338.html

相关文章:

  • 并发编程 面试速记
  • 图像多分类的人工智能
  • 自由学习记录(46)
  • 使用Gitee Go流水线部署个人项目到服务器指南
  • LeetCode hot 100 每日一题(13)——73. 矩阵置零
  • CMS网站模板设计与用户定制化实战评测
  • 风尚云网|前端|前后端分离架构深度剖析:技术革新还是过度设计?
  • Day20-前端Web案例——部门管理
  • JVM垃圾回收笔记01-垃圾回收算法
  • XSS获取Cookie实验
  • DeepSeek vs 通义大模型:谁将主导中国AI的未来战场?
  • TDE透明加密技术:免改造实现华为云ECS中数据库和文件加密存储
  • debian12运行sql server2022(docker):导入.MDF .LDF文件到容器
  • 【3-22 list 详解STL C++ 】
  • 微博ip属地不发微博会不会变
  • Spring Boot定时任务设置与实现
  • 智能井盖:守护城市安全的“智慧卫士”
  • 本地安装deepseek大模型,并使用 python 调用
  • html实现table超出宽度后滑动展示
  • Blazor+PWA技术打造全平台音乐播放器-从音频缓存到离线播放的实践之路