【无标题】

力扣:200岛屿数量

C++代码:

class Solution {

    int dirs[4][2] = {{0,-1},{0,1},{1,0},{-1,0}};

public:

    int numIslands(vector<vector<char>>& grid) {

        int n = grid.size();

        int m = grid[0].size();

        int res = 0;

        for(int i = 0;i<n;i++)

        {

            for(int j = 0;j<m;j++)

            {

                if(grid[i][j] == '1')

                {

                    res++;

                    grid[i][j] = '0';

                    queue<pair<int,int>> q;

                    q.push({i,j});

                    while(!q.empty())

                    {

                        auto cell = q.front();

                        q.pop();

                        int r = cell.first;

                        int c = cell.second;

                        for(int i = 0;i<4;i++)

                        {

                            int X = r+dirs[i][0];

                            int Y = c+dirs[i][1];

                            if(X>=0 && X<n && Y>=0 && Y<m && grid[X][Y]=='1')

                            {

                                q.push({X,Y});

                                grid[X][Y] = '0';

                            }

                        }

                    }

                }

            }

        }

        return res;

    }

};

思路(图解(以例题以为例)

/*

  ["0","1","1","1","0"],

  ["1","1","0","1","0"],

  ["1","1","0","0","0"],

  ["0","0","0","0","0"]

p(0,0)

r =0;c=0;

X=0  0  1  -1

Y=-1 1  0  0

  ["0","0","1","1","0"],

  ["0","1","0","1","0"],

  ["1","1","0","0","0"],

  ["0","0","0","0","0"]

p(0,1)(1,0)

r=0,c=1;

X=0  0  1  -1

Y=0  2  1  1

  ["0","0","0","1","0"],

  ["0","0","0","1","0"],

  ["1","1","0","0","0"],

  ["0","0","0","0","0"]

p(1,0)(0,2)(1,1)

r=1;c=0;

X=1  1  2  0

Y=-1 1  0  0

  ["0","0","0","1","0"],

  ["0","0","0","1","0"],

  ["0","1","0","0","0"],

  ["0","0","0","0","0"]

p(0,2)(1,1)(2,0)

r=0;c=2;

X=0  0  1  -1

Y=1  3  2  2

  ["0","0","0","0","0"],

  ["0","0","0","1","0"],

  ["0","1","0","0","0"],

  ["0","0","0","0","0"]

p(1,1)(2,0)(0,3)

r=1;c=1;

X=1  1  2  0

Y=0  2  1  1

  ["0","0","0","0","0"],

  ["0","0","0","1","0"],

  ["0","0","0","0","0"],

  ["0","0","0","0","0"]

p(2,0)(0,3)(2,1)

r=2;c=0;

X=2  2  3  1

Y=-1 1  0  0

  ["0","0","0","0","0"],

  ["0","0","0","1","0"],

  ["0","0","0","0","0"],

  ["0","0","0","0","0"]

p(0,3)(2,1)

r=0;c=3;

X=0  0  1  -1

Y=2  4  3  3

  ["0","0","0","0","0"],

  ["0","0","0","0","0"],

  ["0","0","0","0","0"],

  ["0","0","0","0","0"]

p(2,1)(1,3)

r=0;c=3;

X=0  0  1  -1

Y=2  4  3  3

*/




 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值