计算机网络(一)

vue项目中引入vue-html5plus进行定位

  返回  

leetcode_1162.地图分析 (多源bfs)

2021/8/20 15:50:33 浏览:

题目链接

解题思路

image.png

也是第一次写多源BFS

理论上大爆搜用bfs或dfs都可以,但是这个题的话明显把层次与最终答案联系起来了

一开始在想多源bfs是个啥,其实就是把queue的大小作为每一层的判断依据,就可以判断有几个层了

image.png

注意全是1 或者全不是要单独判断

代码

class Solution {
public:
    int maxDistance(vector<vector<int>>& grid) {
        int dx[4]={-1,0,1,0},dy[4]={0,1,0,-1};

        queue<pair<int,int> > que;
        int size=grid.size(),res=0;
        for(int i=0;i<size;i++){
            for(int j=0;j<size;j++){
                if(grid[i][j]==1)
                    que.push(make_pair(i,j));
            }
        }
        if(que.empty() || que.size()==size*size)
        return -1;
        while(!que.empty()){
            int temp=que.size();//先计算当前层的
            while(temp--){//temp不会被更新
                auto f=que.front();
                que.pop();
                for(int i=0;i<4;i++){
                    int nx=f.first+dx[i],ny=f.second+dy[i];
                    if(nx>=0&&nx<size&&ny>=0&&ny<size&&grid[nx][ny]==0){//注意要把判断边界放在前面
                        que.push(make_pair(nx,ny));
                        grid[nx][ny]=1;
                    }
                }
            }
            res++;
        }
        return res-1;
    }
};

联系我们

如果您对我们的服务有兴趣,请及时和我们联系!

服务热线:18288888888
座机:18288888888
传真:
邮箱:888888@qq.com
地址:郑州市文化路红专路93号