LeetCode - 岛屿数量

200. 岛屿数量

第一种写法:遍历岛屿,当遇到岛屿的时候,就开始进行深搜,遇到岛屿就将岛屿从1变为0。

class Solution {
public:

    int dx[4] = {0,0,1,-1};
    int dy[4] = {1,-1,0,0};

    void dfs(int i, int j, vector<vector<char>>& grid)
    {
        grid[i][j] = '0';

        for (int t = 0; t < 4; t++)
        {
            int x = i + dx[t];
            int y = j + dy[t];
            if (x >= 0 && x < grid.size() && y >= 0 && y < grid[0].size() && grid[x][y] == '1')
            {
                bfs(x, y, grid);
            }
        }
    }

    int numIslands(vector<vector<char>>& grid) {
        int ans = 0;

        for (int i = 0; i < grid.size(); i++)
        {
            for (int j = 0; j < grid[0].size(); j++)
            {
                if (grid[i][j] == '1')
                {
                    dfs(i, j, grid);
                    ans++;
                }
            }
        }
        return ans;

    }
};

第二种写法:扫描网格,进行宽搜,遇到1之后,就将1周围的岛屿加入队列,

class Solution {
public:

    int dx[4] = {0,0,1,-1};
    int dy[4] = {1,-1,0,0};

    void bfs(int i, int j, vector<vector<char>>& grid)
    {
        queue<pair<int,int>> q;
        q.push({i, j});
        while (!q.empty())
        {
            auto t = q.front();
            q.pop();
            int x = t.first;
            int y = t.second;
            if (grid[x][y] == '1')
            {
                grid[x][y] = '0';
                for (int tt = 0; tt < 4; tt++)
                {
                    int xx = x + dx[tt];
                    int yy= y + dy[tt];
                    if (xx >= 0 && xx < grid.size() && yy >= 0 && yy < grid[0].size())
                    {
                        q.push({xx, yy});
                    }
                }
            }
            else 
            {
                ;
            }
        }
    }

    int numIslands(vector<vector<char>>& grid) {
        int ans = 0;

        for (int i = 0; i < grid.size(); i++)
        {
            for (int j = 0; j < grid[0].size(); j++)
            {
                if (grid[i][j] == '1')
                {
                    bfs(i, j, grid);
                    ans++;
                }
            }
        }
        return ans;

    }
};

相关推荐

  1. leetcode 200 岛屿数量

    2024-04-01 10:56:03       25 阅读
  2. leetcode算法题:岛屿数量

    2024-04-01 10:56:03       54 阅读
  3. 【图论】Leetcode 200. 岛屿数量【中等】

    2024-04-01 10:56:03       48 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-01 10:56:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-01 10:56:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-01 10:56:03       82 阅读
  4. Python语言-面向对象

    2024-04-01 10:56:03       91 阅读

热门阅读

  1. 普中51单片机学习笔记——蜂鸣器

    2024-04-01 10:56:03       28 阅读
  2. 多线程面试题

    2024-04-01 10:56:03       31 阅读
  3. Photoshop笔记大全

    2024-04-01 10:56:03       39 阅读
  4. android中include标签

    2024-04-01 10:56:03       34 阅读
  5. 【Go】面向萌新的Gin框架知识梳理学习笔记

    2024-04-01 10:56:03       29 阅读
  6. StatefulSet介绍-更新-扩容缩容-HPA

    2024-04-01 10:56:03       27 阅读
  7. 2024.3.31力扣(1200-1400)刷题记录

    2024-04-01 10:56:03       37 阅读
  8. 著名的分布式数据库

    2024-04-01 10:56:03       30 阅读