Podríamos usar DFS o BFS para recorrer toda la cuadrícula y luego marcar la celda visitada como ‘v’ para asegurarnos de que no la volvamos a visitar. Intento simplemente esta pregunta. En mi siguiente código, supongo que todas las islas adyacentes conectadas se forman 2D horizontalmente, 2D verticalmente y 3D verticalmente. Por lo tanto, solo configuro seis direcciones en mi código (verifique la matriz dx, dy, dz). Le invitamos a expandir estos arreglos para obtener más direcciones (tal como Akshay mencionó, 26 direcciones).
public int numIslands (grilla char [] [] []) {
int cuenta = 0;
for (int i = 0; i <grid.length; i ++) {
for (int j = 0; j <grid [0] .length; j ++) {
for (int k = 0; k <grid [0] [0] .length; k ++) {
if (grilla [i] [j] [k] == ‘1’) {
recuento ++;
dfs (cuadrícula, i, j, k);
}
}
}
}
cuenta de retorno;
}
- ¿Cuáles son las vías para que un ingeniero de software gane más dinero?
- ¿Cuántas horas trabajan los ingenieros de software de teletrabajo?
- ¿Por qué los programadores se jactan de cuántas líneas de código, siendo más grande 'mejor', cuando en realidad los mejores programas son a menudo bastante pequeños para lo que hacen?
- ¿Comienza a explotar la burbuja tecnológica?
- ¿Cuál es el origen del término "ingeniero de software"?
dfs privado vacío (char [] [] [] grid, int x, int y, int z) {
if (x> = grid.length || x <0
|| y> = cuadrícula [0] .length || y <0
|| z> = cuadrícula [0] [0] .length || z <0
|| cuadrícula [x] [y] [z]! = ‘1’) {
regreso;
}
cuadrícula [x] [y] [z] = ‘v’;
int [] dx = {1, -1, 0, 0, 0, 0};
int [] dy = {0, 0, 1, -1, 0, 0};
int [] dz = {0, 0, 0, 0, 1, -1};
for (int i = 0; i <dx.length; i ++) {
dfs (cuadrícula, x + dx [i], y + dy [i], z + dz [i]);
}
}