1
Googleの招待コードチャレンジを受け取りました。私はあなたが最大で1つの壁を取り除くことを許可されている間に迷路のminimunのパスを見つけるような問題がある。私は自分のコードを提出し、400 bad request
しか得ていません。私はそれが私のコードの問題であるかどうかわからないので、これについて少し混乱しています。以下は私のコードですが、時間のかかる複雑さが懸念されることがあります。dfsソリューションでgoogle foobarチャレンジエラーが発生しました
public class Answer {
public static int answer(int[][] maze) {
// Your code goes here.
boolean[][] visited = new boolean[maze.length][maze[0].length];
return dfs(0, 0, true, visited, maze, 1);
}
private static int dfs(int x, int y, boolean allowRemove, boolean[][] visited, int[][] maze, int len){
if(x == maze.length - 1 && y == maze[0].length - 1){
return len;
}
int[] dx = {0, 0, -1, 1};
int[] dy = {-1, 1, 0, 0};
visited[x][y] = true;
int min = Integer.MAX_VALUE;
for(int i = 0; i < 4; i++){
int nx = dx[i] + x;
int ny = dy[i] + y;
if(nx < 0 || ny < 0 || nx >= maze.length || ny >= maze[0].length || visited[nx][ny]){
continue;
}
if(maze[nx][ny] == 0){
min = Math.min(dfs(nx, ny, allowRemove, visited, maze, len + 1), min);
}else if(allowRemove){
min = Math.min(dfs(nx, ny, false, visited, maze, len + 1),min);
}
if(min == maze.length + maze[0].length - 1){
break;
}
}
visited[x][y] = false;
return min;
}
}
あなたがこの問題を解決するためにどのような方法を見つけました。私は期限切れになっています。最適化の提案があれば歓迎します。 – rizzz86