LeetCode 200. Number of Islands

来源:互联网 发布:手机淘宝官方网站注册 编辑:程序博客网 时间:2024/06/05 17:58

描述

给出一个矩阵,找独立的块有多少

解决

bfs遍历


class Solution {public:    int numIslands(vector<vector<char>>& grid) {        int dir[4][2] = {{1,0}, {0, 1}, {-1, 0}, {0, -1}};        queue<pair<int, int>> que;        int r = grid.size();        int l = r ? grid[0].size() : 0;        int cnt = 0;        for (int i = 0; i < r; ++i)        {            for (int j = 0; j < l; ++j)            {                if (grid[i][j] == '0')                    continue;                else if (grid[i][j] == '1')                {                    que.push(make_pair(i, j));                    grid[i][j] = '0';                    ++cnt;                    cout << "hre\n";                    while (!que.empty())                    {                        pair<int, int> t = que.front();                        que.pop();                        for (int k = 0; k < 4; ++k)                        {                            int t_x = t.first + dir[k][0];                            int t_y = t.second + dir[k][1];                            if (t_x >= 0 && t_x < r && t_y < l && t_y >= 0 && grid[t_x][t_y] == '1')                            {                                grid[t_x][t_y] = '0';                                que.push(make_pair(t_x, t_y));                            }                        }                    }                }            }        }        return cnt;    }};
pair<int, int> t = que.front();//若在这里写,超时了= =grid[t.first][t.second] = '0';//que.pop()
0 0
原创粉丝点击