Cómo encontrar los números que aparecen solo una vez en una matriz?
Tengo una matriz dada llamada m y sus dimensiones son n por n y contiene números enteros. Necesito copiar los números que aparecen solo una vez a un nuevo arreglo llamado a.
Creo que la lógica sería tener un bucle for para cada número en la matriz y compararlo con cada otro número, pero no sé cómo hacer eso en código.
Solo puedo usar bucles (sin mapas u otras cosas) y esto es lo que se me ocurre:
public static void Page111Ex14(int[][] m) {
int previous = 0, h = 0;
int[] a = new int[m.length*m[0].length];
for (int i = 0; i < m.length; i++) {
for (int j = 0; j < m[0].length; j++) {
previous = m[i][j];
if (m[i][j] != previous) {
a[h] = m[i][j];
h++;
}
}
}
Probablemente no sea correcto, sin embargo.
davy.ai
Hay algunos problemas con el código proporcionado. En primer lugar, la variable
previous
se inicializa a 0 fuera del bucle, por lo que siempre estará comparando el elemento actual con 0 en lugar del elemento anterior. Además, la instrucciónif
verifica si el elemento actual no es igual al elemento anterior, lo cual no tiene sentido, ya que siempre serán iguales en la primera iteración del bucle interno.Para copiar solo los números que aparecen una sola vez en una nueva matriz, una aproximación es utilizar bucles
for
anidados para recorrer cada elemento de la matriz y luego verificar si aparece en el resto de la matriz. Si no aparece en ningún otro lugar, se agrega al nuevo arregloa
. Aquí tienes un ejemplo de código:Este código debería crear correctamente una nueva matriz que contiene solo los elementos únicos de la matriz de entrada. Ten en cuenta que esta implementación no es muy eficiente, ya que tiene que verificar cada elemento de la matriz en busca de duplicados. Si el rendimiento es una preocupación, puede haber mejores formas de abordar el problema.