当前位置 : 主页 > 编程语言 > java >

Leetcode 1162. As Far from Land as Possible

来源:互联网 收集:自由互联 发布时间:2022-09-02
题目链接:​​1162. As Far from Land as Possible​​ 题目大意:给你一个01矩阵,只能上下左右走,每个0需要找到一个离自己最近的1,求这些最近距离中的最大值,全0则输出-1 题目思路:水


题目链接:​​1162. As Far from Land as Possible​​

题目大意:给你一个01矩阵,只能上下左右走,每个0需要找到一个离自己最近的1,求这些最近距离中的最大值,全0则输出-1

题目思路:水题,对每个0去BFS一次,最后找到最大距离即可

时间复杂度&&空间复杂度:O(nn)&&O(nn)(n为矩阵个数)

class Solution {
public:
int vis[4][2] = {{0,1},{1,0},{0,-1},{-1,0}};
int maxDistance(vector<vector<int>>& grid) {
int ans = -1;
int len1 = grid.size(),len2 = grid[0].size();
for(int i = 0;i < len1;i++){
for(int j = 0;j < len2;j++){
if(grid[i][j] == 0){
int visit[105][105] = {0};
queue<pair<int,pair<int,int> > >q;
pair<int,pair<int,int> >pa;
q.push(make_pair(i,make_pair(j,0)));
int res,flag = 0;
while(!q.empty()){
pa = q.front();
q.pop();
res = pa.second.second;
for(int i = 0;i < 4;i++){
int newi = pa.first+vis[i][0];
int newj = pa.second.first+vis[i][1];
if(newi < 0||newi >= len1||newj < 0||newj >= len1||visit[newi][newj] == 1) continue;
if(grid[newi][newj] == 1) {ans = max(res+1,ans);flag = 1;break;}
visit[newi][newj] = 1;
q.push(make_pair(newi,make_pair(newj,res+1)));
}
if(flag) break;
}
}
}
}
return ans;
}
};


上一篇:poj 2236 Wireless Network
下一篇:没有了
网友评论