import java.util.LinkedList;
import java.util.Queue;
/*
[[1,1,0,1],
[1,0,1,0],
[1,1,1,1],
[1,0,1,1]]
求0,0到特定点的最短路径长度
*/
public class PathLength {
int[][] direction={{1,0},{0,1},{-1,0},{0,-1}};
public int minPathLength(int[][] grid,int x,int y){
int m=grid.length;
if(m==0||x<0||y<0){
return -1;
}
int n=grid[0].length;
int res=0;
Queue<Pair> queue=new LinkedList<>();
queue.offer(new Pair(0,0));
while(!queue.isEmpty()){
int size=queue.size();
res++;
while(size-->0){
Pair cur=queue.poll();
int cx=cur.getKey();
int cy=cur.getValue();
grid[cx][cy]=0;
for(int[] d:direction){
int nx=cx+d[0];
int ny=cy+d[1];
if(nx<0||nx>=m||ny<0||ny>=n||grid[nx][ny]==0){
continue;
}
if(nx==x&&ny==y){
return res;
}
queue.offer(new Pair(nx,ny));
}
}
}
return -1;
}
}
class Pair{
int x;
int y;
public Pair(int x,int y){
this.x=x;
this.y=y;
}
public int getKey(){
return x;
}
public int getValue(){
return y;
}
}
BFS——求二维矩阵中0,0到特定点的最短路径长度
最新推荐文章于 2023-09-25 20:57:41 发布